菜菜的学习了一下STL的vector,做一下笔记感觉这个网站讲得通俗易懂http://www.cppreference.com/cppvector/index.html 写了一下测试code(待续)
C++ Vectors
Vectors contain contiguous elements stored as an array. Accessing members of a vector or appending elements can be done in constant time, whereas locating a specific value or inserting elements into the vector takes linear time.
Display all entries for C++ Vectors on one page, or view entries individually:
Vector constructors |
create vectors and initialize them with some data |
Vector operators |
compare, assign, and access elements of a vector |
assign |
assign elements to a vector |
at |
returns an element at a specific location |
back |
returns a reference to last element of a vector |
begin |
returns an iterator to the beginning of the vector |
capacity |
returns the number of elements that the vector can hold |
clear |
removes all elements from the vector |
empty |
true if the vector has no elements |
end |
returns an iterator just past the last element of a vector |
erase |
removes elements from a vector |
front |
returns a reference to the first element of a vector |
insert |
inserts elements into the vector |
max_size |
returns the maximum number of elements that the vector can hold |
pop_back |
removes the last element of a vector |
push_back |
add an element to the end of the vector |
rbegin |
returns a reverse_iterator to the end of the vector |
rend |
returns a reverse_iterator to the beginning of the vector |
reserve |
sets the minimum capacity of the vector |
resize |
change the size of the vector |
size |
returns the number of items in the vector |
swap |
swap the contents of this vector with another |
1#include<vector>
2#include<iostream>
3#include<algorithm>
4using namespace std;
5void print(int a){cout<<a<<" ";}
6int main()
7{
8 vector<int>v,v1;
9 vector<int>::iterator iv1,iv2;
10 vector<int>v2;
11 v2.reserve(10);
12 v.assign(10,2);
13 cout<<v2.capacity()<<endl;//capacity容量输出为10
14 cout<<v2.size()<<endl;//大小输出为1
15 int i;
16 for(i=0;i<7;i++)v2.push_back(i);
17 for_each(v2.begin(),v2.end(),print);
18 cout<<endl;
19 for(iv1=v2.begin();iv1!=v2.end();iv1++)
20 if(*iv1==3)break;
21 if(iv1!=v2.end())v2.insert(iv1,99);
22 for_each(v2.begin(),v2.end(),print);
23 cout<<endl;
24 if(iv1!=v2.end())v2.insert(iv1,5,99);
25 for_each(v2.begin(),v2.end(),print);
26 cout<<endl;
27 if(iv1!=v2.end())v2.insert(iv1,v.begin(),v.end());
28 for_each(v2.begin(),v2.end(),print);
29 cout<<endl;
30 cout<<v2.size()<<endl;
31 v2.erase(v2.begin());
32 cout<<v2.size()<<endl;
33 v2.erase(v2.begin(),v2.end());
34 for_each(v2.begin(),v2.end(),print);
35 iv1=v.begin();iv2=v.end();
36 cout<<v.begin()<<endl;
37 cout<<v.end()<<endl;
38 cout<<iv1<<endl;
39 cout<<iv2<<endl;
40// for(i=0;i<15;i++)cout<<v[i]<<" ";
41// cout<<endl;
42// for(i=0;i<15;i++)cout<<v.at(i)<<" ";//at()函数更加安全;
43// cout<<endl;
44 for_each(v.begin(),v.end(),print);
45 cout<<endl;
46// v1.assign(v.begin(),v.end());
47// v1.assign(iv1+2,iv2-2);
48// for(i=0;i<10;i++)cout<<v1[i]<<' ';
49// cout<<endl;
50 for(i=0;i<10;i++)v1.push_back(i);
51 for_each(v1.begin()+1,v1.end()-2,print);//输出begin开始指向的数据,直到end指向的前一个数据
52 for_each(v1.begin(),v1.end(),print);
53 cout<<endl;
54 cout<<v1.back()<<endl;
55 cout<<v1.front()<<endl;
56 cout<<v1.size()<<endl;
57 v.clear();
58 cout<<v.size()<<endl;
59 for_each(v.begin(),v.end(),print);//已经clear,begin==end,不会有任何结果。
60 return 0;
61}
62
63
64
65//试了一下结构体,感觉自己简直太水了,努力学习中!
66
67#include<iostream>
68#include<vector>
69using namespace std;
70typedef struct node{
71 int x;
72 int y;
73}node;
74ostream operator<<(ostream in,node a){
75 in<<a.x<<a.y<<endl;
76 return in;
77}
78int main()
79{
80 vector<node>v(10);
81 v[0].x=1;v[0].y=1;
82 vector<node>::iterator iv(v.begin());
83 cout<<v[0].x<<v[0].y<<endl;
84 cout<<*iv<<endl;
85 cout<<iv->x<<iv->y<<endl;
86 return 0;
87}