STL--vector
菜菜的学习了一下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 >
4 using namespace std;
5 void print( int a) {cout<<a<<" ";}
6 int 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 >
69 using namespace std;
70 typedef struct node {
71 int x;
72 int y;
73} node;
74 ostream operator << (ostream in ,node a) {
75 in<<a.x<<a.y<<endl;
76 return in;
77}
78 int 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}
2 #include < iostream >
3 #include < algorithm >
4 using namespace std;
5 void print( int a) {cout<<a<<" ";}
6 int 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 >
69 using namespace std;
70 typedef struct node {
71 int x;
72 int y;
73} node;
74 ostream operator << (ostream in ,node a) {
75 in<<a.x<<a.y<<endl;
76 return in;
77}
78 int 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}