STL-vector

Vector是一个动态数组,其元素可以是任意型别,但必须满足assign和copy两个性质。

一、Vector的构造函数:

    vector<int>v;//创建一个空vector
    vector<int>v1(5);//创建一个大小为5的初始化为值为0的vector{0,0,0,0,0}
    vector<int>v2(5,9);//创建一个大小为5,值都为9的vector{9,9,9,9,9}
    vector<int>v3(v2);//利用拷贝构造了一个v2副本的vector{9,9,9,9,9}
    vector<int>v4(v3.begin(),v3.end());//以区间创建了一个vector{9,9,9,9,9}
    int a[] = { 1,3,5,2,4,6 };
    vector<int>v5(a,a+6);//以数组创建了一个vector{1,3,5,2,4,6}
    //以输入流迭代器创建了一个vector,其中第一个参数必须加(),否则创建的不是vector而是一个函数声明
    vector<int>v6((istream_iterator<int>(cin)),istream_iterator<int>());

二、Vector的非变动性操作:

    v.size();//返回v中的当前元素个数
    v.capacity();//返回v创建时能容纳最大元素的个数
    v.empty();//判断v是否为空,空返回true;其效率高于v.size(0);
    v.max_size();//返回v最大容纳元素的个数
    v.reserve(20);//如果容量不足,扩容时容量大小为形参设定值,且形参值大于当前容量值
    v == v1;//判断v是否等于v1
    v != v1;//判断v是否不等于v1
    v > v1;//判断v是否大于v1
    v < v1;//判断v是否小于v1
    v <= v1;//判断v是否小于等于v1
    v >= v1;//判断v是否大于等于v1

三、Vector的赋值操作

    v.assign(8, 10);//将n个值为elem的元素赋值给v
    v.assign(v1.begin(), v1.end());//将v1区间的元素赋值为v
    v = v1;//将v1赋值为v
    v.swap(v1);//交换v与v1的元素
    swap(v, v1);//同上,此为全局函数

四、Vector元素的存取

    v[i];//返回索引i所标示的元素,不进行范围检测
    v.at(i);//返回索引i所标示的元素,i越界抛出out_of_range
    v.back();//返回最后一个元素,不检查最后一个元素是否存在
    v.front();//返回第一个元素,不检查第一个元素是否存在

五、Vector迭代器相关函数

    v.begin();//返回指向第一个元素的迭代器
    v.end();//返回指向最后元素下一个位置的迭代器
    v.rbegin();//返回指向最后一个元素的迭代器
    v.rend();//返回指向第一个元素前一个位置的迭代器
    v.cbegin();//返回指向第一个元素的常迭代器
    v.cend();//返回指向最后元素下一个位置的常迭代器
    v.crbegin();//返回指向最后一个元素的常迭代器
    v.crend();//返回指向第一个元素前一个位置的常迭代器

六、Vector的插入操作

    v.push_back(1);//在末尾插入元素
    v.insert(v.begin(), 2);//在某位置前插入元素
    v.insert(v.end(), 5, 20);//在某位置前插入n个值为elem的元素
    v.insert(v.begin, v1.begin(), v1.end());//在某位置前插入一段区间元素

七、Vector的删除操作

    v.pop_back();//末尾删除
    v.erase(v.begin());//指定位置上的元素删除
    v.erase(v.begin(), v.end());//指定区间中的元素删除
    v.clear();//全部元素清除
    v.resize(6);//将元素的数量改为形参数,如果其大于size则多出来的元素值由default构造完成,小于size截取后半段
    v.resize(6, 10);//将元素的数量改为形参数,如果其大于size则多出来的元素值为elem,小于size截取后半段

八、Vector的减容操作

    vector<int>v9(v1);
    v9.swap(v1);//将v1的容量缩减至size大小
    v.shrink_to_fit();//将v1的容量缩减至size大小

九、Vector的算法

1、移除与某值相等得所有元素

v.erase(remove(v.begin(), v.end(), val));//移除元素值为val的所有元素

 

Tags: