zoukankan      html  css  js  c++  java
  • 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的所有元素
  • 相关阅读:
    mybatis-day1
    java基础
    pytest进阶之html测试报告
    pycharm在github上clone项目
    selenium中的显示等待WebDriverWait与条件判断expected_conditions举例
    pytest-html报告中添加报错截图
    Fiddler抓包工具如何设置过滤域名
    os.system运行cmd命令时,命令中嵌套了引号
    Pytest之模块之间共享skipif标记
    Pycharm出现同一目录的py文件不能相互调用的问题
  • 原文地址:https://www.cnblogs.com/dhhu007/p/13282792.html
Copyright © 2011-2022 走看看