deque即双端队列,同样采用模板类实现,支持在头部/尾部插入和删除元素:
deque.push_back(elem); //在容器尾部添加一个元素
deque.push_front(elem); //在容器头部插入一个元素
deque.pop_back(elem); //删除容器最后一个元素
deque.pop_front(); //删除容器第一个元素
示例:
#include <algorithm>
#include <deque>
#include <iostream>
void show_deque(std::deque<int>& dq)
{
for (std::deque<int>::iterator iter = dq.begin(); iter != dq.end(); ++iter) {
std::cout << *iter <<" ";
}
std::cout << std::endl;
}
int main()
{
std::deque<int> dq1;
for (int i = 0; i < 5; ++i) {
dq1.push_back(i + 1); //尾加数据
}
for (int i = 0; i < 5; ++i) {
dq1.push_front(i + 11); //头加数据
}
show_deque(dq1);
dq1.pop_back(); //删除尾部元素
dq1.pop_front(); //删除头部元素
show_deque(dq1);
return 0;
}
STL实现了从迭代器获取该元素的下标的方法distance(),需要包含algorithm头文件:
std::deque<int>::iterator it = find(dq1.begin(), dq1.end(), 11);
if (it != dq1.end()) {
std::cout << "元素11的下标为: " << distance(dq1.begin(), it) << std::endl;
}
else {
std::cout << "不存在元素11" << std::endl;
}