16.3.1【deque容器基本概念、构造函数】
1 #include<iostream> 2 #include<stdlib.h> 3 using namespace std; 4 #include<deque> 5 6 7 /* 8 3.3 deque容器 9 3.3.1 deque基本概念 10 双端数组,可以对头端进行插入删除操作(类似于队列?) 11 deque与vector区别: 12 vector对于头部的插入删除效率低,数据量越大,效率越低 13 deque相对而言,对头部的插入删除速度回比vector快 14 vector访问元素时的速度会比deque快,这和两者内部实现有关 15 deque内部工作原理: 16 deque内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据 17 中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间 18 deque容器的迭代器也是支持随机访问的 19 20 3.3.2 deque构造函数 21 deque<T> deqT; //默认构造形式 22 deque(beg, end); //构造函数将[beg, end)区间中的元素拷贝给本身 23 deque(n, elem); //构造函数将n个elem拷贝给本身 24 deque(const deque &deq); //拷贝构造函数 25 */ 26 27 28 /* 29 void pd(deque<int> & d) 30 { 31 for(deque<int>::iterator it=d.begin(); it!=d.end(); it++) 32 { 33 *it = 100; //读取数据时可能会发生意外修改 34 cout << *it << " "; 35 } 36 cout << endl; 37 } 38 */ 39 40 41 void pd(const deque<int> & d) 42 { 43 for(deque<int>::const_iterator it=d.begin(); it!=d.end(); it++) //对应使用只读迭代器 44 { 45 //*it = 100; //设置const后,该句报错,可防止读取是意外修改 46 cout << *it << " "; 47 } 48 cout << endl; 49 } 50 51 52 void test332() 53 { 54 deque<int> d1; //默认无参构造 55 for(int i=0; i<10; i++) 56 { 57 d1.push_back(i); 58 } 59 pd(d1); 60 61 deque<int> d2(d1.begin(), d1.end()); 62 pd(d2); 63 64 deque<int> d3(10, 666); //10个666 65 pd(d3); 66 67 deque<int> d4(d1); //拷贝构造 68 pd(d4); 69 } 70 71 72 int main() 73 { 74 test332(); 75 76 system("pause"); 77 return 0; 78 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!