STL常用操作:deque

1.初始化

deque<int> deq;        //创建一个空的deque 
deque<int> deq(deq1);       //用一个已有的deque初始化当前deque
deque<int> deq(5);    //创建一个deque,含有5个元素0
deque<int> deq(3, 5);    //创建一个deque,含有3个5
deque<int> deq(arr, arr+5);     //创建一个deque,以数组内的元素为初值 
deque<int> deq(vec.begin(), vec.begin()+5);//创建一个deque,以vector中的元素为初值
deque<int> deq{1,2,3,4,5};    //用initializer_list初始化

2.常用操作

deq.at(4);	    //判断索引idx所标示的元素。如果idx越界,抛出out_of_range 
deq[4];        	//返回索引idx所标示的元素。不进行范围检查 
deq.front();	    //返回第一个元素。不检查元素是否存在 
deq.back();	        //返回最后一个元素。不检查元素是否存在 
deq.push_back(5);	    //在尾部添加5
deq.push_front(5);	    //在头部插入一个5
deq.emplace(deq.begin()+2, 5);    //在deq第三个位置插入5
deq.emplace_back(5);    //在尾部添加5
deq.emplace_front(5);    //在头部插入一个5
deq.pop_back();	        //移除最后一个元素(无返回值)
deq.pop_front();	    //移除头部元素(无返回值)
deq1 == deq2;	        //判断是否deq1等于deq2 
deq.size();	        //返回容器的实际元素个数 
deq.empty();	    //判断容器大小是否为零。等同于size()==0,但可能更快
deq.insert(deq.begin()+2, 5);	    //在第三个位置插入一个5,并返回新元素的位置 
deq.insert(deq.begin(), 3, 5);	    //在开始位置插入3个5,并无返回值 
deq.insert(deq.begin(), deq1.begin(), deq1.end());	//在开始位置插入在区间[begin,end)所有元素
deq.erase(deq.begin());	    //移除第一个的元素,返回下一个元素位置 
deq.erase(deq.begin(), deq.end());	//移除[begin, end)区间内的所有元素,返回下一个元素位置 
deq.resize(10);	        //将元素个数改为10,多则删,少则添 
deq.resize(10, 2);	    //将元素个数改为10,多则删,少则添2
deque<int>::iterator it = deq.begin();	
deque<int>::const_iterator c_it = deq.cbegin();	
deque<int>::reverse_iterator r_it = deq.rbegin();
deque<int>::const_reverse_iterator cr_it = deq.crbegin();  
deq.clear();	    //移除所有元素,将容器清空

3.不常用操作

deq.max_size();	//返回可容纳的最大元素数量 
deq.assign(3, 5);	//将n个elem副本赋值给deq 
deq.assign(deq1.begin(), deq1.end());	//将区间[begin,end)中的元素赋值给deq
deq.assign(arr,arr+sizeof(arr)/sizeof(int));//用数组赋值
deque<deque<int>> matrix(3, deque<int>(5));    //二维deque
deq1.swap(deq2);	//将deq1和deq2的元素互换 
swap(deq1, deq2);	//将deq1和deq2的元素互换
allocator<int> alloc = deq.get_allocator();    //获取内存分配器
deq.shrink_to_fit();    //释放未使用的内存

4.遍历

  • 下标法
for(int i = 0; i < deq.size(); i++) cout << deq[i] << " ";
  • 迭代器
for(deque<int>::iterator it = deq.begin(); it != deq.end(); ++it) {
        cout << *it << " ";
}
  • C11
for(int& x : deq) cout << x << " ";

 5.算法

find(deq.begin(), deq.end(), 5);    //查找5,并返回迭代器位置,失败返回end()
sort(deq.begin(), deq.end());    //vector和deque没有成员函数,但是可以使用std函数来排序
ostream_iterator<int> output(cout, " ");copy(deq.begin(),deq.end(),output);//以空格分隔输出到屏幕
发布了36 篇原创文章 · 获赞 6 · 访问量 6988

猜你喜欢

转载自blog.csdn.net/zhuikefeng/article/details/104710318