STL之如何选择顺序容器

一、顺序容器的分类

  顺序容器: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 }
原文地址:https://www.cnblogs.com/chris-cp/p/4592652.html