菜菜的学习了一下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
}