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;
}

 

posted @ 2021-11-08 22:14  小康规划  阅读(327)  评论(0)    收藏  举报