一、顺序容器的分类
顺序容器: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 }