C++ STL vector容器语法及内置方法

注:以下v即代表已初始化好的vector容器

1.描述

几乎可以算是数组的替代品,不过数组是静态空间,vector是动态扩展,但是vector只能从一端操作,也叫单端数组(所以后面会有一个双端数组deque)

    注:可以像数组一样取得下标位置元素,也可以用其修改
int a=v[0];
v[0]=1;
    注:若嵌套也可以像二维数组一样使用,但是一定要记得分配内存:
vector<vector<int>> v(10);
v[0].resize(1);
v[0][0]=1;
    也有内置方法取得,和[]作用一样
int a=v.at(0);

2.初始化

  • 直接声明(可以用逗号分隔声明多个)
vector<T> v;
vector<T> v1,v2;
  • 直接声明并赋予长度,且默认值为0
vector<T> v(len);
  • 复制vector中任意区间
vector(v.begin(),v.end());
vector<int> v1;
vector<int> v;
v.assign(v1.begin(),v1.end());
  • n个elem初始化
vector(n,elem);
vector<int> v;
v.assign(3,4);
  • 复制另一个
vector(v);
  • 数组式初始化vector
vector<int> v={
    
    1,2,3};
vector<int> v{
    
    1,2,3};
  • 数组转vector
int x[3]={
    
    1,2,3};
vector<int> v(x,x+3);
  • =
vector<int> v2(1,10);
vector<int> v;
v=v2;

注:若写函数中返回值为vector,可直接return数组返回,如:

vector<int> eg(int a,int b)
    {
    
    
        return {
    
    a,b};
    }

3.内置方法

  • 尾插,无返回
v.push_back(10);
  • 指定迭代器位置插入单个元素,无返回
v.insert(v.begin(),10);
  • 指定迭代器位置插入10个2,无返回
v.insert(v.begin(),102);
  • 尾删,无返回
v.pop_back();
  • 删除迭代器位置元素
v.erase(v.begin());
  • 删除迭代器区间元素
v.erase(v.begin(),v.end());
  • 全部清空,无返回
v.clear();
  • 返回首元素
v.front();
  • 返回尾元素
v.back();
  • 判空,返bool
 if(v.empty()){
    
    
 
 }
  • 容器大小(容量)
v.capacity()
  • 元素个数
v.size()
  • 重指定容器大小,长则默认填充0,或者指定后一个参数为默认。短则削去。无返回
v.resize(10)
v.resize(102)
  • 预留空间
v.reverse(100);
  • 容器 互换
v1.swap(v2);
注:一般用来收缩内存,因为很多时候vector用了其他方法后容量依然没变,导致内存占用过多
vector<int>(v1).swap()v1;

猜你喜欢

转载自blog.csdn.net/DonquixoteXXXXX/article/details/113791426
今日推荐