Vector容器

vector 是将元素置于一个动态数组中的加以管理的容器。

vector可以随机存取元素(支持索引直接存取,用[]操作符或at()方法,后面会详细概述

vector 尾部添加或移除元素非常快速,但是在中间或者头部插入元素或移除元素比较费时

具体参考:

https://blog.csdn.net/weixin_41743247/article/details/90635931

vector的添加和删除:

 1         vector<int> v1;
 2     cout << "length : " << v1.size() << endl;
 3     v1.push_back(1);
 4     v1.push_back(2);
 5     v1.push_back(3);
 6     //修改头部元素的值
 7     //函数返回值当左值 应该返回一个引用
 8     v1.front() = 11;
 9     v1.back() = 55;
10     cout << "length : " << v1.size() << endl;
11     //获取头/尾部元素
12     cout << "头部元素 : " << v1.front() << endl;        

vector的初始化:

1     vector<int> v1;
2     v1.push_back(1);
3     v1.push_back(3);
4     v1.push_back(5);
5     v1.push_back(7);
6 
7     vector<int> v2 = v1;//对象初始化
8     vector<int> v3(v1.begin(), v1.begin() + 2);
9     vector<int> v4(3, 9);//存放三个9;

vector的数组遍历:

 1 void printV(vector<int>& v)
 2 {
 3     for (int i = 0; i < v.size(); i++)
 4     {
 5         cout << v[i] << " ";
 6     }
 7 }
 8 void main33()
 9 {
10     //通过数组的方式遍历
11     vector<int> v1(10);//通过数组方式赋值:需要把内存准备好
12     for (int i = 0; i < 10; i++)
13     {
14         v1[i] = i + 1;
15     }
16     //for (int i = 0; i < 10; i++)
17     //{
18     //    cout << v1[i] << " ";
19     //}
20     printV(v1);
21 }
22 int main()
23 {
24     main33();
25 
26 
27     system("pause");
28     return 0;
29 }

push_back原理

    vector<int> v1(10);
    v1.push_back(100);
    v1.push_back(200);
    cout << "size: " << v1.size() << endl;
    printV(v1);

可以知道 push_back 是从vector数组的最后开始插入,并且插入一次就增加一个元素。(上述程序中数组增加了2个元素的大小)。

 使用迭代器遍历:

//1  迭代器 end()的理解
//1   3   5
//////当it == v1.end()的时候,说明这个容器已经遍历完毕了
//end()的位置 应该是5的后面


//2.迭代器的种类 vector中有正向迭代器 和 逆向迭代器
void main35()
{
    vector<int> v(10);
    for (int i = 0; i < 10; i++)
    {
        v[i] = i + 1;

    }
    for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << *it << " ";
    }

    //逆向遍历 用vector提供的逆向迭代器
    for (vector<int>::reverse_iterator rit = v.rbegin(); rit != v.rend(); rit++)
    {
        cout << *rit << " ";
    }
}

 vector  删除和插入

    vector<int> v(10);
    for (int i = 0; i < 10; i++)
    {
        v[i] = i + 1;

    }
    //区间删除
    v.erase(v.begin(), v.begin() + 3);
    printV(v);
    //根据元素的位置 指定位置删除
    v.erase(v.begin());//在头部删除元素
    printV(v);

    //根据元素的值删除
    v[1] = 2;
    v[3] = 2;

    printV(v);
    for (vector<int>::iterator it = v.begin(); it != v.end(); )
    {
        if (*it == 2)
        {
            it = v.erase(it);//当删除迭代器所指向的元素的时候,erase函数会让it自动下移
        }
        else
        {
            it++;
        }
    }
    printV(v);

    v.insert(v.begin(), 100);//头插法
    v.insert(v.end(), 200);//尾插法
    printV(v);
原文地址:https://www.cnblogs.com/ymj11/p/13805077.html