vector介绍
一、vector单口容器
vector容器是动态数组,即可变数组,vector的地层是一个静态的数组但是经过了类的封装。
(vector的单口性质,即vector的数据是从一端进一端出的)

二、vector容器的常用函数
1.push_back()该函数实现vector的尾端插入数据
2.pop_back()该函数实现从vector的尾端弹出数据
3.insert()在vector容器中插入数据
insert()函数有三种形式
1、insert(需要插入的地址,元素)
2、insert(需要插入的地址,元素个数(赋值),元素)
3、insert(需要插入的地址,另一个数组的部分元素(地址))
int main() { vector<Student>myarray; Student student01(1, "David"), student02(2, "Li"), student03(3, "Crazy"); myarray.push_back(student01); myarray.push_back(student02); myarray.push_back(student03); //利用自己写好的遍历功能进行遍历 myarray.pop_back(); myarray.insert(myarray.end(),student03); for (vector<Student>::iterator beg = myarray.begin(); beg != myarray.end(); beg++) { cout << (*beg).id << endl; cout << (*beg).name << endl; } return 0; }

三、vector容器的迭代器
vector的迭代器分为正向begin()和end()以及反向rbegin()和rend()具体如上图所示
注意:begin是容器第一个元素的所在位置,end是容器最后一个元素所在位置的下一个位置
四、vector的遍历(利用for_each算法)
#include<iostream> #include<vector> #include<algorithm> using namespace std; //自定义数据类型,学生类 class Student { public: int id; string name; Student(int a, string b) :id(a), name(b) {} }; //这里有一个小小的问题,将类作为函数的参数时,该函数必须在全局域中实现(不能在main函数中实现,否则无法访问对象的属性) void func(Student x) { cout << x.name << endl; cout << x.id << endl; } int main() { vector<Student>myarray; Student student01(1, "David"), student02(2, "Li"), student03(3, "Crazy"); myarray.push_back(student01); myarray.push_back(student02); myarray.push_back(student03); //利用自己写好的遍历功能进行遍历 //for (vector<Student>::iterator beg = myarray.begin(); beg != myarray.end(); beg++) //{ // cout << (*beg).id << endl; // cout << (*beg).name << endl; //} //利用r的迭代器从后往前遍历 vector<Student>::iterator beg = myarray.begin(); vector<Student>::iterator end = myarray.end(); for_each(beg,end, func); return 0; }

浙公网安备 33010602011771号