deque是双端数组,跟vector类似,只不过多了从头部添加和删除的操作,直接上例子:
1、deque的基本操作
#include<iostream>
#include<deque>
using namespace std;
void print(deque<int>& d) {
deque<int>::iterator it = d.begin();
for (; it != d.end(); it++)
cout << *it << " ";
cout << endl;
}
void func1() {
deque<int> d;
d.push_back(1);
d.push_back(3);
d.push_back(5);
d.push_front(-1);
d.push_front(-3);
d.push_front(-5);
print(d);
cout << "头部元素:" << d.front() << endl;
cout << "尾部元素:" << d.back() << endl;
d.pop_front();
d.pop_back();
print(d);
}
int main(){
func1();
system("pause");
return 0;
}
输出结果:
2、查找元素所在下标
void func2() {
deque<int> d;
d.push_back(1);
d.push_back(3);
d.push_back(5);
d.push_front(-1);
d.push_front(-3);
d.push_front(-5);
deque<int>::iterator it = find(d.begin(), d.end(), -3);
if (it != d.end())
cout << "-3的下标为:" << distance(d.begin(), it) << endl;
else
cout << "找不到元素-3" << endl;
}
输出结果:
这里的find和distance函数都是STL的算法。
find(d.begin(), d.end(), -3);
从d的begin到end区间查找-3这个元素出现的位置,并返回迭代器的位置。
distance(d.begin(), it)
求出it迭代器所在位置与begin位置的偏移。