C++向量 vector
需要包含头文件, #include <vector>
using namespace std;
vector 容器与数组相比其优点在于它能够根据需要随时自动调整自身的大小以便容下所要放入的元素
vector<int> arr; //创建一个可以容纳整数值的动态数组 vector<int> a1(10); //声明一个初始大小为10的向量 vector<int> a(10, 1); //声明一个初始大小为10且初始值都为1的向量 vector<int> b(a); //声明并用向量a初始化向量b vector<int> b2=a; //声明并用向量a初始化向量b2 vector<int> b1(a.begin(), a.begin() + 3); //将a向量中从第0个到第2个(共3个)作为向量b1的初始值 vector<int> b3(a.begin(), a.end()); //将a向量中从第0个到最后一个作为向量b3的初始值 int n[] = { 1, 2, 3, 4, 5 }; vector<int> a2(n, n + 5); //将数组n的前5个元素作为向量a2的初值 vector<int> a3(&n[1], &n[4]); //将n[1] - n[4]范围内的元素作为向量a3的初值;顾头不顾尾 int x = a2[0];//返回指定序号的元素值 x = a2.at(0);//返回指定序号的元素值 x=a2.size(); //返回数组元素的总个数;0表示数组为空 x= a2.front(); //返回数组的第一个元素的值 x= a2.back(); //返回数组的最后一个元素的值 a.clear(); //清空数组,即把里面的所有元素都删除 vector<int>::iterator iter; //定义一个迭代器变量;可以理解成指针 iter=a2.begin(); //返回数组第一个数的下标;返回值类型:迭代器 a2.end(); //返回数组最后一个数的下标;返回值类型:迭代器 bool bl= a2.empty(); //判断数组是否为空,如果为空则返回true,非空(有元素)则返回false //a2.swap(b); //两个动态数组的元素互换 //swap(a2, b); //两个动态数组的元素互换 a2.push_back(30); //在尾部插入一个元素 a2.insert(a2.begin() + 1, 888); //在下标1的位置插入元素 a2.insert(a2.begin() + 2, 3, 999); ////在下标2的位置插入3个元素 a2.insert(a2.end() , 66); //在尾部插入一个元素 a2.insert(a2.end(),2, 55); //在尾部插入n个元素 int nn[] = { 15,25,35,45,55,65,75 }; a2.insert(a2.end(), nn+1, nn+5); //插入普通数组中的元素 //参数1 插入位置 //参数2 普通数组的第1个元素开始 //参数3 普通数组的第5个元素结束,顾头不顾尾 a2.pop_back(); //删除动态数组的最后一个元素 int k=0,l=1,r=1; a2.erase(a2.begin() + k); //删除动态数组的下标为 k 的元素,返回下一个位置的迭代器 a2.erase(a2.begin() + l, a2.end() - r); //删除动态数组;从小标l开始,尾部留下r个 //遍历方法一,使用索引下标来遍历 for (int i=0;i<a2.size();i++) { x = a2[i]; } //遍历方法二,使用迭代器来遍历 for (iter=a2.begin();iter!=a2.end();++iter) { x = *iter; }
a2[0]=10;给指定序号赋值
std::vector<int> vec = { 10, 20, 30, 40, 50 }; int* pos = vec.data();//返回值:该函数返回一个指向数组中第一个元素的指针,该指针在向量内部使用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)