STL之如何选择顺序容器

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 一、顺序容器的分类   顺序容器:vector向量、list链表、deque双端队列;   优先级最高的是vector向量,它的速度比较快,优点最多;   在程序设计中,容器可以切换; 1 #include 2 #include 3 #include 4 #inclu...

一、顺序容器的分类

  顺序容器: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 }

 

相关文章
|
1月前
|
存储 搜索推荐 C++
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器2
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器
52 2
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器2
|
5月前
|
存储 算法 编译器
8.STL中Vector容器的常见操作(附习题)
8.STL中Vector容器的常见操作(附习题)
|
1月前
|
存储 C++ 容器
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器1
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器
54 5
|
1月前
|
存储 编译器 C++
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
57 2
|
3月前
|
安全 编译器 容器
C++STL容器和智能指针
C++STL容器和智能指针
|
5月前
|
设计模式 存储 C++
【C++/STL】:stack/queue的使用及底层剖析&&双端队列&&容器适配器
【C++/STL】:stack/queue的使用及底层剖析&&双端队列&&容器适配器
68 2
|
5月前
|
C++ 容器
C++ STL:各类容器的特点和优缺点比较
C++ STL:各类容器的特点、优势、劣势比较
|
5月前
|
算法 前端开发 Linux
【常用技巧】C++ STL容器操作:6种常用场景算法
STL在Linux C++中使用的非常普遍,掌握并合适的使用各种容器至关重要!
92 10
|
5月前
|
编译器 C++ 容器
【C++/STL】:list容器的深度剖析及模拟实现
【C++/STL】:list容器的深度剖析及模拟实现
45 2
|
5月前
|
存储 C++ 容器
【C++/STL】:list容器的基本使用
【C++/STL】:list容器的基本使用
40 1
下一篇
无影云桌面