企业网站模板免费,中国材料信息网,海口网站制作软件,做网站的小图标我是学C语言的#xff0c;本以为c的vector只能创建数组#xff0c;但现在才发现他还是太全面了。
他的功能#xff1a;
在C中#xff0c;std::vector 是一个动态数组容器#xff0c;提供高效的随机访问和动态扩容功能。
1. 头文件
#include vector
#include 本以为c的vector只能创建数组但现在才发现他还是太全面了。
他的功能
在C中std::vector 是一个动态数组容器提供高效的随机访问和动态扩容功能。
1. 头文件
#include vector
#include iostream
#include algorithm // 用于sort等算法
using namespace std;2. 初始化与声明
// 空向量
vectorint v1;// 指定大小5个元素默认值0
vectorint v2(5);// 指定大小和初始值5个元素值-1
vectorint v3(5, -1);// 列表初始化
vectorint v4 {1, 2, 3, 4, 5};// 从数组初始化
int arr[] {10, 20, 30};
vectorint v5(arr, arr sizeof(arr)/sizeof(int));// 复制构造
vectorint v6(v4);
3. 元素访问
vectorint v {10, 20, 30};// 下标访问不检查边界
int a v[1]; // a20// 安全访问边界检查越界抛异常
int b v.at(2); // b30// 首尾元素
int front v.front(); // 10
int back v.back(); // 30// 数据指针C风格交互
int* p v.data(); // 指向首元素
4. 容量操作
vectorint v {1, 2, 3};v.empty(); // 是否为空 → false
v.size(); // 元素数量 → 3
v.capacity(); // 实际分配内存大小 sizev.reserve(100); // 预分配100个元素内存
v.shrink_to_fit(); // 释放多余内存C11
5. 修改操作
vectorint v {10, 20};// 尾部插入
v.push_back(30); // {10,20,30}// 删除尾部
v.pop_back(); // {10,20}// 指定位置插入迭代器位置
v.insert(v.begin() 1, 15); // {10,15,20}// 删除元素迭代器位置
v.erase(v.begin()); // {15,20}// 清空向量
v.clear();// 重置大小多删少补默认值
v.resize(5); // {0,0,0,0,0}
6. 迭代器遍历
vectorint v {1, 3, 5};// 正向迭代器遍历
for (auto it v.begin(); it ! v.end(); it) {cout *it ;
}// 反向迭代器遍历
for (auto rit v.rbegin(); rit ! v.rend(); rit) {cout *rit ;
}// 范围for循环C11
for (int num : v) {cout num ;
}7. 高级操作
// 交换两个向量
vectorint v1 {1, 2}, v2 {3, 4};
v1.swap(v2); // v1{3,4}, v2{1,2}// 比较操作按字典序
if (v1 v2) { /*...*/ }// 排序需#include algorithm
sort(v1.begin(), v1.end());// 逆序
reverse(v1.begin(), v1.end());