cb16a_c++_顺序容器的选用_排序_二分查找

/*cb16a_c++_顺序容器的选用_排序_二分查找
顺序容器:
1.vector的优点与缺点
vector优点:排序利用下标,快速排序,做二分查找非常快
2.list的优点与缺点
list优点:插入,删除速度快。vector插入,删除速度慢。
list缺点:排序慢
3.deque的优点与缺点
优点:快速排序,双端操作。
缺点:比vector操作慢一点点
插入操作如何影响容器的选择---list
元素的访问如何影响容器的选择---vector
选择容器的提示---不知道选择哪个,就vector. 因为vector可以转list或者deque

参考:

https://www.cnblogs.com/txwtech/p/12317531.html
vector sort算法排序。。。
vector 排序后,做二分查找非常快
if (binary_search(v.begin(), v.end(),70))//二分查找,找70.
{
cout << "找到了" << endl;
}
//链表排序后,没有下标,不能随机操作,不能用二分查找。只能线程查找
*/

 1 /*cb16a_c++_顺序容器的选用_排序_二分查找
 2 顺序容器:
 3  1.vector的优点与缺点
 4  vector优点:排序利用下标,快速排序,做二分查找非常快
 5  2.list的优点与缺点
 6  list优点:插入,删除速度快。vector插入,删除速度慢。
 7  list缺点:排序慢
 8  3.deque的优点与缺点
 9  优点:快速排序,双端操作。
10  缺点:比vector操作慢一点点
11 插入操作如何影响容器的选择---list
12 元素的访问如何影响容器的选择---vector
13 选择容器的提示---不知道选择哪个,就vector. 因为vector可以转list或者deque
14  vector sort算法排序。。。
15 vector 排序后,做二分查找非常快
16 if (binary_search(v.begin(), v.end(),70))//二分查找,找70.
17     {
18         cout << "找到了" << endl;
19     }
20 //链表排序后,没有下标,不能随机操作,不能用二分查找。只能线程查找
21 */
22 
23 #include <iostream>
24 #include <list>
25 #include <vector>
26 #include <deque>
27 #include <algorithm>
28 
29 using namespace std;
30 
31 int main()
32 {
33     vector<int> v;
34     list<int> l;
35     deque<int> d;
36     d.push_back(50);
37     d.push_front(10);//双端操作
38 
39 
40     v.push_back(10);
41     v.push_back(90);
42     v.push_back(50);
43     vector<int>::iterator vi = v.begin();
44     ++vi;
45     ++vi;
46     v.insert(vi, 70);//插入在vi迭代器前,70
47     vi = v.begin();
48     ++vi;
49     v.erase(vi);//删除后,后面的数据向前移动
50     sort(v.begin(),v.end());//排序后,做二分查找非常快
51     //二分查找
52     if (binary_search(v.begin(), v.end(),70))//二分查找,找70.
53     {
54         cout << "找到了" << endl;
55     }
56     else
57     {
58         cout << "没找到" << endl;
59     }
60 
61 
62     l.push_back(10);//list插入速度快
63     l.push_back(90);
64     l.push_back(50);
65     list<int>::iterator li = l.begin();
66     ++li;
67     ++li;
68     l.insert(li,20);//list插入速度快,动态创建节点,指针前后连接。
69     li = l.begin();
70     ++li;
71     l.erase(li);//删除速度快。删除后,直接前后指针相连接
72     l.sort();
73     if (binary_search(l.begin(), l.end(), 50))//链表没有下标,不能随机操作,不能用二分查找。只能线程查找
74     {
75         cout << "找到了" << endl;
76     }
77     else
78     {
79         cout << "没找到" << endl;
80     }
81 
82 
83 
84     return 0;
85 }

 

posted @ 2020-02-17 13:16  txwtech  阅读(234)  评论(0编辑  收藏  举报