vector操作原理

vector 常用操作

#include <iostream>
#include <vector>

int main()
{
    //1.定义和初始化
    vector<int> vec1;    //默认初始化,vec1为空
    vector<int> vec2(vec1);  //使用vec1初始化vec2
    vector<int> vec3(vec1.begin(),vec1.end());//使用vec1初始化vec2
    vector<int> vec4(10);    //10个值为0的元素
    vector<int> vec5(10,4);  //10个值为4的元素
    
    //2.常用操作方法
    //2.1 添加函数
    vec1.push_back(100);            // 尾部添加元素
    vec1.insert(vec1.end(),5,3);    // 从vec1.back位置插入5个值为3的元素
    
    //2.2 删除函数
    vec1.pop_back();              // 删除末尾元素
    vec1.erase(vec1.begin(),vec1.begin()+2);  // 删除vec1[0]-vec1[2]之间的元素,不包括vec1[2]其他元素前移
    vec1.clear();                 // 清空元素,元素在内存中并未消失,通常使用swap()来清空
    vector<int>().swap(V);        // 利用swap函数和临时对象交换内存,交换以后,临时对象消失,释放内存。
                                  // 必须是同类型的 vector
                                  // 且只有存储对象时才有效
    
    //2.3 遍历函数
    vec1[0];        //取得第一个元素
    vec1.at(int pos);     //返回pos位置元素的引用
    vec1.front();  //返回首元素的引用
    vec1.back();  //返回尾元素的引用
    vector<int>::iterator begin= vec1.begin();  //返回向量头指针,指向第一个元素
    vector<int>::iterator end= vec1.end();  //返回向量尾指针,指向向量最后一个元素的下一个位置
    vector<int>::iterator rbegin= vec1.rbegin();  //反向迭代器,指向最后一个元素
    vector<int>::iterator rend= vec1.rend();  //反向迭代器,指向第一个元素之前的位置
    
    //2.4 判断函数
    bool isEmpty = vec1.empty();    //判断是否为空
    
    //2.5 大小函数
    int size = vec1.size();  //元素个数
    vec1.capacity();  //返回容器当前能够容纳的元素个数
    vec1.max_size();  //返回容器最大的可能存储的元素个数
    
    //2.6 改动函数
    vec1.assign(int n,const T& x);  //赋n个值为x的元素到vec1中,这会清除掉vec1中以前的内容。
    vec1.assign(const_iterator first,const_iterator last);  //当前向量中[first,last)中元素设置成迭代器所指向量的元素,这会清除掉vec1中以前的内容。
}