STL之如何选择顺序容器
容器 如何 选择 顺序 STL
2023-09-27 14:27:44 时间
一、顺序容器的分类
顺序容器:vector向量、list链表、deque双端队列;
优先级最高的是vector向量,它的速度比较快,优点最多;
在程序设计中,容器可以切换;
1 #include <iostream> 2 #include <vector> 3 #include <list> 4 #include <deque> 5 6 using namespace std; 7 8 int main() 9 { 10 vector<int> Ivec; 11 list<int> Ilist; //利用链表 12 deque<int> Ideque; 13 14 Ivec.push_back(10); 15 Ivec.push_back(20); 16 Ivec.push_back(30); 17 Ivec.push_back(30); 18 Ivec.push_back(30); 19 Ivec.push_back(30); 20 Ivec.push_back(30); 21 vector<int>::iterator it=Ivec.begin(); 22 it++; 23 it++; 24 Ivec.insert(it, 59); //插入操作比较慢,因为插入点之后的数据都需要向后移动 25 it++; 26 Ivec.erase(it); //删除操作也比较慢,数组中删除同样需要移动数据 27 28 sort(Ivec.begin(), v.end()); //速度比较快,sort中利用下标快速排序, 29 //存在下标,在排好序的情况下,利用二分法查找很快; 30 if(binary_search(Ivec.begin(), Ivec.end(), 59)){ 31 std::cout << "find 59 ok" << std::endl; 32 }else{ 33 std::cout << "find 59 error" << std::endl; 34 35 sort(Ivec.begin(), v.end()); //速度比较快,sort中利用下标快速排序, 36 //存在下标,在排好序的情况下,利用二分法查找很快; 37 if(binary_search(Ivec.begin(), Ivec.end(), 59)){ 38 std::cout << "find 59 ok" << std::endl; 39 }else{ 40 std::cout << "find 59 error" << std::endl; 41 } 42 43 Ilist.push_back(10); 44 Ilist.push_back(20); 45 Ilist.push_back(30); 46 Ilist.push_back(30); 47 Ilist.push_back(30); 48 Ilist.push_back(30); 49 list<int>::iterator it2=Ilist.begin(); 50 it2++; 51 it2++; 52 Ilist.insert(it2, 59); //插入操作比较快,因为链表的插入不需要移动数据 53 it2++; 54 Ilist.erase(it2); //在链表中直接操作指针即可 55 56 Ilist.sort(); //链表中排序比较慢 57 //二分法查找,在list是伪二分法查找,速度比较慢 58 if(binary_search(Ilist.begin(), Ilist.end(), 59)){ 59 std::cout << "find 59 ok" << std::endl; 60 }else{ 61 std::cout << "find 59 error" << std::endl; 62 } 63 64 //deque,可以在前端操作,操作灵活,所有的操作比vector慢一点点,分区存储,可以保存大量数据 65 Ideque.push_back(50); 66 Ideque.push_front(10); 67 68 return 0; 69 }
相关文章
- 如何查看一个docker容器占用空间的大小?
- Docker最全教程之MySQL容器化 (二十四)
- 四款 MySQL Operator 助你容器数据库
- 74 C++ - vector容器
- 如何在 Docker 容器中运行 Kali Linux 2.0
- 如何在一个Docker容器里安装Discourse
- Linux挂载读取Windows分区文件及PVE 下挂载到虚拟机和LXC容器方法
- DataHub: 现代数据栈的元数据平台--如何快速验证所有组件容器都在正确的运行?
- docker如何构建多架构(arm64, x86_64, armv7)容器镜像?
- linux下如何映射宿主机中的文件到容器中?
- 阿里云运行docker容器报错
- Docker容器------安装+镜像加速
- ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(一)
- Spring Boot容器配置,使用内置Tomcat并添加HTTPS
- 查看容器在Docker中的IP
- 已创建的容器设置自动启动
- 转 Docker 组件如何协作?- 每天5分钟玩转容器技术(8)
- 如何在servlet的监听器中使用spring容器的bean
- Qt中容器类应该如何存储对象(最好使用对象指针类型,如:QList<TestObj*>,而不要使用 QList<TestObj> 这样的定义,建议采用 智能指针QSharedPointer)
- grid布局之容器属性grid-auto-columns&grid-auto-rows
- docker基础之容器、数据卷、数据卷容器(五)
- 容器服务--如何在阿里云容器服务上运行基于TensorFlow的Alexnet
- docker:如何查看容器的挂载目录