C++ vector(向量)使用方法详解
简介
vector
是 C++ STL 中的一个重要数据结构,用于实现动态数组。它具有许多优点,包括支持尾部插入、常量时间访问、动态分配内存等。
基本操作
创建 vector
创建一个空的 vector
和一个具有初始值的 vector
的方式如下:
#include <vector>
using namespace std;
int main() {
// 创建一个空的 vector
vector<int> vec1;
// 创建一个具有初始值的 vector
vector<int> vec2 {1, 2, 3, 4, 5};
// 或者
vector<int> vec3 = {1, 2, 3, 4, 5};
return 0;
}
访问 vector
vector
可以通过下标或迭代器访问,如下所示:
vector<int> vec {1, 2, 3, 4, 5};
// 使用下标访问
int x = vec[0];
// 使用迭代器访问
for (auto it = vec.begin(); it != vec.end(); ++it) {
cout << *it << endl;
}
往 vector 中添加元素
vector
可以使用 push_back()
添加元素,也可以使用 insert()
在任意位置插入元素,如下所示:
vector<int> vec {1, 2, 3, 4, 5};
// 在尾部插入一个元素
vec.push_back(6);
// 在任意位置插入元素
vec.insert(vec.begin() + 2, 10);
// 在任意位置插入多个元素
vec.insert(vec.begin() + 3, {7, 8, 9});
从 vector 中删除元素
vector
可以使用 pop_back()
删除尾部元素,也可以使用 erase()
删除任意位置的元素,如下所示:
vector<int> vec {1, 2, 3, 4, 5};
// 删除尾部元素
vec.pop_back();
// 删除任意位置元素
vec.erase(vec.begin() + 2);
// 删除任意位置多个元素
vec.erase(vec.begin() + 1, vec.begin() + 3);
顺序访问 vector 的多种方式
使用下标遍历
如前面的示例所示,vector
可以使用下标访问,因此可以使用 for 循环遍历:
vector<int> vec {1, 2, 3, 4, 5};
for (int i = 0; i < vec.size(); ++i) {
cout << vec[i] << endl;
}
遍历时修改元素
使用范围 for 循环遍历时,可以使用引用修改 vector 中的元素:
vector<int> vec {1, 2, 3, 4, 5};
for (int& x : vec) {
x = x * x;
}
使用迭代器遍历
使用迭代器遍历,可以使用 while 循环或 for 循环:
vector<int> vec {1, 2, 3, 4, 5};
// 使用 while 循环
auto it = vec.begin();
while (it != vec.end()) {
cout << *it << endl;
++it;
}
// 使用 for 循环
for (auto it = vec.begin(); it != vec.end(); ++it) {
cout << *it << endl;
}
使用 std::for_each() 遍历
std::for_each() 是一个 STL 算法,可以将指定的函数应用于 vector 的每个元素:
vector<int> vec {1, 2, 3, 4, 5};
// 定义一个用于输出元素的函数
void print(int x) {
cout << x << endl;
}
// 使用 std::for_each() 遍历
for_each(vec.begin(), vec.end(), print);
示例
示例 1:使用 vector 存储字符串
下面是一个示例,使用 vector
存储字符串,并使用迭代器遍历:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<string> v;
// 添加元素
v.push_back("Hello");
v.push_back("World");
// 使用迭代器遍历
for (auto it = v.begin(); it != v.end(); ++it) {
cout << *it << endl;
}
return 0;
}
输出:
Hello
World
示例 2:使用 vector 实现向量加法
下面是一个示例,使用 vector
实现两个向量之间的加法,并使用范围 for 循环遍历:
#include <iostream>
#include <vector>
using namespace std;
vector<int> add(vector<int>& v1, vector<int>& v2) {
vector<int> result(v1.size());
for (int i = 0; i < v1.size(); ++i) {
result[i] = v1[i] + v2[i];
}
return result;
}
int main() {
vector<int> v1 {1, 2, 3, 4, 5};
vector<int> v2 {6, 7, 8, 9, 10};
// 计算向量和
vector<int> v = add(v1, v2);
// 使用范围 for 循环遍历
for (int x : v) {
cout << x << " ";
}
cout << endl;
return 0;
}
输出:
7 9 11 13 15
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c++ vector(向量)使用方法详解(顺序访问vector的多种方式) - Python技术站