【C++初学笔记】STL容器vector的基本使用

目录

一、声明与初始化

1.头文件

2.声明

3.初始化

二、常用方法

1.元素访问

2.大小与容量

3.判断为空

4.元素添加

5.元素删除

6.元素修改

7.元素查找

8.容器遍历


#个人初学笔记,无举例,如有疏漏或错误,欢迎指出#

一、声明与初始化

1.头文件

#include<vector>

2.声明

std::vector<Type> nameVector;

3.初始化

  • resize()函数
//int类型举例
//std::vector<int> nameVector;

//对于int,分配n个0
nameVector.resize(n);

//对于int,分配n个m
nameVector.resize(n,m);
  • 声明初始化
//int类型举例

//数组初始化
std::vector<int> nameVector = {1, 2, 3};

//类似resize()
std::vector<int> nameVector(n);
std::vector<int> nameVector(n, m);

//vector初始化, 复制
//设存在vector容器vector2
std::vector<int> nameVector(vector2);
std::vector<int> nameVector = vector2;

//指针初始化
//通常是截取数组的一部分
std::vector<int> nameVector(*ptr1, *ptr2);
//如std::vector<int> nameVector(vector2.begin() + 1, vector2.end() - 1);
  • 二维数组
//声明(行数为m)
std::vector<std::Vector<Type>> nameVector(m); 

//初始化(列数为n)
for(int i = 0; i < nameVector.size(); i++){
    nameVector[i].resize(n);
}

二、常用方法

1.元素访问

  • 下标访问
//访问下标为n的元素
nameVector[n]
  • 函数访问
//at函数访问n位置的元素
nameVector.at(n);

2.大小与容量

//访问vector大小(有多少元素)
vector.size();

//访问vector容量(能有多少元素)
vector.capacity();

//大小重分配为n
vector.resize(n);
//变小=>抛弃末尾;变大=>填充默认值(通常为0)

3.判断为空

//判断容器是否为空
nameVector.empty();

4.元素添加

  • 末尾插入
//末尾添加元素x
nameVector.push_back(x);
  • 定位插入
//使用迭代器指定位置
std::vector<Type> iterator it;

//向迭代器位置插入元素x
nameVector.insert(it, x);

5.元素删除

  • 末尾删除
//删除最后一个元素
nameVector.pop_back();
  • 定位删除
//删除迭代器位置的元素
nameVector.erase(it);
//函数返回删除元素后一个元素的迭代器
  • 定值删除
//删除值为x的元素
//需要algorithm库

remove(nameVetor.begin(), nameVector.end(), x);
//函数返回删除元素的后一个元素的迭代器

//然而,该函数不会改变size和capacity
//因此通常与erase()函数配合使用
nameVector.erase(remove(nameVetor.begin(), nameVector.end(), x), nameVector.end());
  • 清空容器
//清空容器,但容量(capacity)不变
nameVector.clear();

6.元素修改

//修改下标为i的元素的值为x
nameVector[i] = x;

7.元素查找

//查找指定值为x的元素
//需要两个迭代器指定范围
nameVector.find(it1, it2, x);
//函数返回第一个该元素的迭代器,找不到则返回end(),即末尾迭代器

8.容器遍历

  • 下标遍历
for(std::vector<Type>::iterator it = nameVector.begin(); it != nameVector.end(); it++){
    //...访问元素(nameVector[it]或*it)...
}
  • 元素遍历
//拷贝,x可修改,但不影响原数据
for(auto x: nameVector){
    //...访问元素(x)...
}

//引用,x可修改,同步修改原数据
for(auto &x: nameVector){
    //...
}

//只读,x不可修改
for(const auto &x: nameVector){
    //...
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值