赞
踩
目录
deque内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据
中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间
deque容器的迭代器也是支持随机访问的
- //deque构造函数
- void myprint(const deque<int> d) {
- for (deque<int>::const_iterator it = d.begin(); it != d.end();it++) {
- /**it = 10;*/
- cout << *it << " ";
- }
- cout << endl;
- }
-
-
- void test01() {
-
- //1、默认构造
- deque<int> d;
- for (int i = 0; i < 10; i++) {
- d.push_back(i);
- }
- myprint(d);
-
- //2、区间构造
- deque<int> d1(d.begin(),d.end());
- myprint(d1);
-
- //3、n个elem构造
- deque<int> d2(10,100);
- myprint(d2);
-
- //4、拷贝构造
- deque<int> d3(d2);
- myprint(d3);
-
-
- }
-
- int main() {
- test01();
- system("pause");
- return 0;
- }
- //deque赋值
- void myprint(const deque<int> d) {
- for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++) {
- /**it = 10;*/
- cout << *it << " ";
- }
- cout << endl;
- }
-
-
- void test01() {
-
- deque<int> d;
- for (int i = 0; i < 10; i++) {
- d.push_back(i);
- }
- myprint(d);
-
- //1、等号赋值
- deque<int> d1;
- d1 = d;
- myprint(d1);
-
- //2、assign区间赋值
- deque<int> d2;
- d2.assign(d1.begin(),d1.end());
- myprint(d2);
-
- //3、assign,n个elem赋值
- deque<int> d3;
- d3.assign(10,100);
- myprint(d3);
-
- }
-
- int main() {
- test01();
- system("pause");
- return 0;
- }
- //deque大小操作
- void myprint(const deque<int> d) {
- for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++) {
- cout << *it << " ";
- }
- cout << endl;
- }
-
- void test01() {
-
- deque<int> d;
- for (int i = 0; i < 10; i++) {
- d.push_back(i);
- }
- myprint(d);
-
- //1、判断是否为空
- if (d.empty()) {
- cout << "d,为空" << endl;
- }
- else {
- cout << "d,不为空" << endl;
- //2、输出容器大小
- cout << "d,大小为:" << d.size() << endl;
- }
-
- //3、改变大小,空缺默认用0填充
- d.resize(15);
- myprint(d);
-
- //4、改变大小,设定空缺用1填充
- d.resize(20,1);
- myprint(d);
-
- //5、改变大小,过小发生截断
- d.resize(5);
- myprint(d);
- }
-
- int main() {
- test01();
- system("pause");
- return 0;
- }
注意:deque没有容量的概念
两端插入操作:
指定位置操作:
- //deque大小操作
- void myPrint(const deque<int> d) {
- for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++) {
- cout << *it << " ";
- }
- cout << endl;
- }
-
- //两端操作
- void test01() {
-
- deque<int> d;
- //尾插尾删
- d.push_back(10);
- d.push_back(20);
- d.push_back(30);
- d.pop_back();
- myPrint(d);
-
- //头插头删
- d.push_front(40);
- d.push_front(50);
- d.push_front(60);
- d.pop_front();
- myPrint(d);
-
- }
-
- //指定位置操作
- void test02() {
- deque<int> d1;
- d1.push_back(10);
- d1.push_back(20);
- d1.push_back(30);
- d1.push_back(40);
- myPrint(d1);
-
- //1、指定位置插入一个值
- d1.insert(d1.begin(),50);
- myPrint(d1);
-
- //2、指定位置插入多个相同值
- d1.insert(d1.end(), 2, 60);
- myPrint(d1);
-
- //3、指定位置插入一个区间
- deque<int> d2;
- d2.push_back(1);
- d2.push_back(2);
- d2.push_back(3);
-
- d1.insert(d1.begin(),d2.begin(),d2.end());
- myPrint(d1);
-
- }
-
- //删除操作
- void test03() {
- deque<int> d1;
- d1.push_back(10);
- d1.push_back(20);
- d1.push_back(30);
- d1.push_back(40);
- myPrint(d1);
-
- //1、指定位置删除,返回下一个数据的位置
- d1.erase(d1.begin());
- myPrint(d1);
-
- //2、指定区间删除,返回下一个数据的位置
- //如果区间为【begin,end】,等价于 clear()
- d1.erase(d1.begin(),d1.end());
- myPrint(d1);
-
- //3、清空
- d1.clear();
- myPrint(d1);
-
- }
-
- int main() {
- //test01();
-
- //test02();
- test03();
- system("pause");
- return 0;
- }
- //deque容器的存取
- void test01() {
- deque<int> d;
- d.push_back(10);
- d.push_back(20);
- d.push_back(30);
- d.push_back(40);
- d.push_back(50);
-
- //1、[]存取
- for (int i = 0; i < d.size();i++) {
- cout << d[i] << " ";
- }
- cout << endl;
-
- //2、at()存取
- for (int i = 0; i < d.size(); i++) {
- cout << d.at(i) << " ";
- }
- cout << endl;
-
- //3、front(),返回第一个
- int ret = d.front();
- cout << ret << endl;
-
- //4、back(),返回最后一个
- ret = d.back();
- cout << ret << endl;
-
- }
-
- int main() {
- test01();
- }
- //deque容器的存取
- void myPrint(const deque<int> d) {
- for(int i = 0; i < d.size(); i++) {
- cout << d[i] << " ";
- }
- cout << endl;
- }
-
- void test01() {
- deque<int> d;
- d.push_back(50);
- d.push_back(40);
- d.push_back(30);
- d.push_back(20);
- d.push_back(10);
-
- cout << "排序前:";
- myPrint(d);
-
- //默认升序
- sort(d.begin(),d.end());
- cout << "排序后:";
- myPrint(d);
-
- }
-
- int main() {
- test01();
- }
注意事项:
1、sort()默认升序排序
2、对于支持随机访问的迭代器的容器,都可以用sort()排序,如vector
3、使用sort()时,需要包含头文件<algorithm>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。