cb01a_c++_数据结构_顺序容器_STL_deque类
/*cb01a_c++_数据结构_顺序容器_STL_deque类
deque是一个动态数组,比vector更加灵活.两者都属于动态数组
deque与vector非常类似
deque可以在数组开头和末尾插入和删除数据
vector只能在数组的末尾插入和删除数据
distance算法
size_t nOffset = distance(a.begin(),iElementLocater);//计算a.begin()与iElementLocator之间的距离
a.begin()位置不变,iElementLocator在变化,所以就可以用在做下标。
*/
1 /*cb01a_c++_数据结构_顺序容器_STL_deque类 2 deque是一个动态数组,比vector更加灵活.两者都属于动态数组 3 deque与vector非常类似 4 deque可以在数组开头和末尾插入和删除数据 5 vector只能在数组的末尾插入和删除数据 6 7 distance算法 8 size_t nOffset = distance(a.begin(),iElementLocater);//计算a.begin()与iElementLocator之间的距离 9 a.begin()位置不变,iElementLocator在变化,所以就可以用在做下标。 10 */ 11 12 #include <iostream> 13 #include <deque> 14 #include <algorithm>//算法 15 16 using namespace std; 17 18 int main() 19 { 20 deque<int> a; 21 a.push_back(3); 22 a.push_back(5); 23 a.push_back(6); 24 a.push_front(2); 25 a.push_front(1); 26 a.push_front(0); 27 28 for (size_t nCount = 0; nCount < a.size(); ++nCount) 29 { 30 cout <<"a["<<nCount<<"]=" << a[nCount] << endl; 31 } 32 // 33 cout << endl; 34 35 a.pop_front();//删除前面的数据 36 a.pop_back();//删除后面的数据 37 for (size_t nCount = 0; nCount < a.size(); ++nCount) 38 { 39 cout << "a[" << nCount << "]=" << a[nCount] << endl; 40 } 41 42 cout <<"使用distance算法"<< endl; 43 //使用deque的迭代器,没有下标 44 deque<int>::iterator iElementLocater; 45 for (iElementLocater = a.begin(); iElementLocater != a.end(); ++iElementLocater) 46 { 47 size_t nOffset = distance(a.begin(),iElementLocater);//计算a.begin()与iElementLocator之间的距离 48 cout << "a[" << nOffset << "]=" <<*iElementLocater << endl; 49 } 50 51 return 0; 52 }
欢迎讨论,相互学习。
cdtxw@foxmail.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)