STL常用容器总结——deque双向队列
来源:互联网 发布:同一首歌停播知乎 编辑:程序博客网 时间:2024/05/05 09:41
参考:c++ STL
deque是双向开口的连续线性空间,可以在头、尾两端插入和删除元素。deque常用函数如下:
1. assign() 赋值,用法为:
deq.assign(begin,end)
将迭代器[begin,end)的内容赋值给deq。
deq.assign(n,elem)
将n个elem赋值给deq。
2.数据访问
deq.at(idx)
deq[idx]返回索引idx所指数据的引用,at会检测idx是否越界,[ ]则不会。
deq.front()返回第一个数据的引用。
deq.back()返回最后一个数的引用。
deq.begin()返回指向第一个数据的迭代器。
deq.end()返回最后一个数据的下一个位置的迭代器。
deq.rbegin()返回逆向队列的第一个数据的迭代器。
deq.rend()返回逆向队列的最后一个数据的下一个位置的迭代器。
上面的迭代器在前面加c返回const的迭代器。
3.添加数据
deq.pop_back(elem)在尾部插入一个数据
deq.push_front(elem)在头部插入一个数据
deq.insert(pos,elem)在pos位置插入一个数据的拷贝,返回新数据位置。
deq.insert(pos,n,elem)在pos位置插入n个数据,无返回值。
deq.insert(pos,begin,end)在pos位置插入迭代器[begin,end)的内容,无返回值。
4.删除数据
deq.pop_back()删除最后一个数据
deq.pop_front()删除第一个数据
deq.erase(it)删除迭代器it所指的数据,返回下一个数据的迭代器。
deq.erase(begin,end)删除迭代器[begin,end)之间的数据,返回下一个数据的迭代器。
5.其他操作
deq.empty()判断容器是否为空,若空,返回true,否则返回false。
deq.max_size()返回队列最大容量
deq.resize()重新指定队列的容量
deq.size()返回队列中数据的数量
deq.swap(deq2)将两队列中元素互换。
deque列子:
#include <iostream>#include <deque>using std::deque;int main(){deque<int> deq(10);for (unsigned i = 0; i < 10; ++i){deq[i] = i*i;}std::cout << "deque中的数据:\n";for (deque<int>::const_iterator it = deq.cbegin(); it != deq.cend(); ++it){std::cout << *it << " ";}std::cout << "\n\n";std::cout << "deque在头尾添加数据:\n";deq.push_front(123);deq.push_back(321);for (deque<int>::const_iterator it = deq.cbegin(); it != deq.cend(); ++it){std::cout << *it << " ";}std::cout << "\n\n";std::cout << "deque查找数据:\n";deque<int>::iterator f=find(deq.begin(), deq.end(), 123);if (f != deq.end())std::cout << "123 在队列中.\n";elsestd::cout << "123 不在队列中.\n";std::cout << "\n";std::cout << "deque删除头尾数据:\n";deq.pop_front();deq.pop_back();for (deque<int>::const_iterator it = deq.cbegin(); it != deq.cend(); ++it){std::cout << *it << " ";}std::cout << "\n\n";std::cout << "deque删除某个数据:\n";deq.erase(deq.begin() + 1);for (deque<int>::const_iterator it = deq.cbegin(); it != deq.cend(); ++it){std::cout << *it << " ";}std::cout << "\n\n";std::cout << "deque删除一个区间数据:\n";deq.erase(deq.begin() + 1,deq.begin()+5);for (deque<int>::const_iterator it = deq.cbegin(); it != deq.cend(); ++it){std::cout << *it << " ";}system("pause");return 0;}
0 0
- STL常用容器总结——deque双向队列
- STL—— deque双向队列
- STL——deque 双向队列
- STL顺序容器-deque(双向队列)
- STL容器之deque双向队列
- deque容器(双向队列)
- 【STL-deque】双向队列
- STL库实现(1)——deque双向队列
- C++ STL-deque双向队列
- STL-deque 双向队列[转载]
- STL之deque双向队列
- 【C++】STL常用容器总结之五:双端队列deque
- STL常用容器总结——queue单向队列
- STL常用容器用法之——Deque
- STL:队列(queue)、优先级队列(priority_queue )及双向队列(deque)总结
- STL容器总结之deque
- STL容器总结之deque
- C++ STL入门教程(3)——deque(双向队列)的使用(附完整程序代码)
- Dubbo高级篇_08_Dubbo服务启动依赖检查
- storm详解: storm分布式单词计数
- ZOJ3927
- 动态规划解背包问题/C++/Knapsack problem
- WH服务器框架分析系列一:内核模块的基石CQueueService
- STL常用容器总结——deque双向队列
- Android自定义ScrollView:实现滑动顶部停靠
- 控制台上ctrl+z引起的疑惑
- SVN服务器搭建和使用(一)
- 前端杂记
- leetcode——12——Integer to Roman
- WH服务器综述
- ADS使用笔记
- 纯css3实现图片轮播