📅  最后修改于: 2023-12-03 15:29:50.208000             🧑  作者: Mango
在C++中,STL提供了一种双端队列容器deque,即double-ended queue。deque可以在两端进行插入、删除操作,可以实现先进先出(FIFO)和后进先出(LIFO)等多种队列行为。
deque可以看作一个数组的容器,使用随机访问方式,同时也支持在两端进行插入和删除操作。deque的大小可以动态调整。
使用deque需要包含头文件<deque>
。可以通过以下方式进行声明:
deque<数据类型> 队列名;
例如:
deque<int> myDeque;
可以在声明时指定deque的初始大小和初始值:
deque<int> myDeque(5, 100); // 创建一个5个元素,初始值为100的deque
也可以通过将一个已有数组作为deque的初始值来进行初始化:
int myArr[] = {1, 2, 3, 4, 5};
deque<int> myDeque(myArr, myArr+5); // 声明一个包含5个整型元素的deque
deque支持在队列头和队列尾进行插入和删除元素的操作,具体方法如下:
push_front()
方法将元素插入队列头。push_back()
方法将元素插入队列尾。pop_front()
方法将队列头的元素删除。pop_back()
方法将队列尾的元素删除。例如:
myDeque.push_back(6); // 将元素6插入队列尾
myDeque.push_front(0); // 将元素0插入队列头
myDeque.pop_back(); // 删除队列尾的元素
myDeque.pop_front(); // 删除队列头的元素
deque的元素可以通过下标或迭代器(iterator)访问,下标从0开始,迭代器通过begin()
和end()
方法获取。
例如:
for(deque<int>::iterator it=myDeque.begin(); it!=myDeque.end(); ++it) {
cout << *it << " "; // 输出deque的所有元素
}
cout << endl;
cout << myDeque[2] << endl; // 输出第3个元素(下标从0开始)
deque是一种非常方便的数据结构,可以在两端进行插入和删除操作,非常适合实现队列和栈。在实际应用中,可以根据需要选择不同的STL容器,以满足不同的需求。