deque双端队列容器
Deque与Vector很相似,不及可以在尾部插入和删除元素,还可以在头部插入和删除,时间复杂度为O(1),考虑到元素的内存分配策略和操作性能时,Deque比Vector有优势。
由于使用了Map管理和以块为单位进行分配,所以不易实现Capacity和Reverse函数,而且也不需要这种函数。
#include<iostream> #include<deque> #include<cstdio> using namespace std; int main() { deque<string>d; d.push_back("1a"); d.push_back("2"); d.push_back("3"); d.push_front("front"); //高效的头部插入元素 //d.pop_front(); //删除首元素 //d.pop_back(); //删除尾元素 //d.erase(d.begin() + 1); //删除指定位置元素 //d.clear(); //删除所有元素 d.insert(d.end() - 2, "insert"); //指定位置插入 for(int i = 0; i < d.size(); i++) //数组方式访问 cout<<d[i]<<" "; cout<<endl; deque<string>::iterator i; //迭代器访问 for(i = d.begin(); i != d.end(); i++) cout<<*i<<" "; cout<<endl; swap(d[1], d[2]); //两元素交换,可交换两个Queue的所有元素 deque<string>::reverse_iterator pi; //反向遍历 for(pi = d.rbegin(); pi != d.rend(); pi++) cout<<*pi<<" "; cout<<endl; cout<<"Deque是否有元素"<<d.empty()<<endl; cout<<"Deque元素个数为"<<d.size()<<endl; cout<<"Deque的首元素为"<<d.front()<<endl; cout<<"Deque的尾元素为"<<d.back()<<endl; cout<<"Deque的最大容量为"<<d.max_size()<<endl; getchar(); return 0; }
运行结果:
永远渴望,大智若愚(stay hungry, stay foolish)