算法笔记 STL vector

 1 #include<cstdio>
 2 #include<vector> 
 3 using namespace std;
 4 void print(vector<int> a){
 5     //(3)用来获得vector中元素的个数,时间复杂度为O(1)
 6     for(int j = 0; j < a.size(); j++){ 
 7         printf("%d ", a[j]);//通过 vi[i] 访问vector中的元素     
 8     }
 9     printf("\n\n");
10 }
11 void print_s(vector<int> a){
12     for(vector<int>::iterator it = a.begin(); it != a.end(); it++){
13         printf("%d ", *it);
14     }
15     printf("\n\n");
16 }
17 int main(){
18     vector<int> vi;
19     for(int i = 1; i <= 10; i++){
20         //(1)在vector后面添加一个元素x,时间复杂度为 O(1) 
21         vi.push_back(i);        
22     }
23     printf("初始化...\n");
24     print(vi);
25     
26     //vi.begin()  为首元素的地址 
27     vector<int>::iterator a = vi.begin(); 
28     //vi.end() 为尾元素的下一个地址 
29     vector<int>::iterator b = vi.end();
30     printf("vi.begin() = %p, vi.end() = %p\n", a, b);
31     
32     //(2)删除vector的尾元素,时间复杂度为 O(1)
33     printf("删除尾元素...\n");
34     vi.pop_back();        
35     print(vi);
36     
37     //(3)用来向vector的任意迭代器it插入一个元素, 时间复杂度为O(N),N为元素个数
38     printf("在 vi.begin()+2 插入一个元素...\n");
39     vi.insert(vi.begin() + 2, 88);    
40     print(vi);
41     
42     //(6)删除一个元素, 时间复杂度为O(N)
43     printf("删除 vi.begin()+8...\n");
44     vi.erase(vi.begin() + 8);    
45     print(vi);
46     
47     //删除一个区间内的元素,删除所有的话用vi.erase(vi.begin(), vi.end()); 
48     printf("删除区间 [vi.begin() + 4, vi.begin() + 6]...\n");
49     vi.erase(vi.begin() + 4, vi.begin() + 6);    
50     print_s(vi);
51     
52     //(4)清除vector中的所有元素,时间复杂度为O(N),N为元素个数
53     printf("清除所有元素...\n");
54     vi.clear();
55     print_s(vi);
56             
57     return 0; 
58 }

输出

初始化...
1 2 3 4 5 6 7 8 9 10

vi.begin() = 00b71330, vi.end() = 00b71358
删除尾元素...
1 2 3 4 5 6 7 8 9

在 vi.begin()+2 插入一个元素...
1 2 88 3 4 5 6 7 8 9

删除 vi.begin()+8...
1 2 88 3 4 5 6 7 9

删除区间 [vi.begin() + 4, vi.begin() + 6]...
1 2 88 3 6 7 9

清除所有元素...

猜你喜欢

转载自www.cnblogs.com/zjsaipplp/p/10411610.html