📅  最后修改于: 2023-12-03 15:29:52.673000             🧑  作者: Mango
在 C++ 中使用向量(vector)时,需要经常遍历其中的元素。本文将介绍 C++ 中循环遍历向量的方法,并提供代码示例。
向量的迭代器提供了一种方便且安全的遍历元素的方法。
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec{ 1, 2, 3, 4, 5 };
// 使用 auto 关键字定义迭代器,自行推导类型
for (auto itr = vec.begin(); itr != vec.end(); ++itr) {
std::cout << *itr << " ";
}
std::cout << std::endl;
// 使用 auto & 关键字定义迭代器引用,避免拷贝迭代器
// 注意这里使用了 C++11 右值引用进行源向量转移,
// 以避免使用具有性能损失的复制构造函数
auto && v = std::move(vec);
for (auto itr = v.begin(); itr != v.end(); ++itr) {
std::cout << *itr << " ";
}
std::cout << std::endl;
return 0;
}
本例中,我们定义了两个用于迭代遍历向量的迭代器,一个使用 auto 关键字自行推导类型,另一个使用 auto & 关键字定义绑定引用。
在循环中,我们使用了递增运算符 ++ 将迭代器向前移动,每次输出指针指向元素的值。
使用 C++11 的 foreach 循环是遍历向量的另一个方便方法。在向量的每个元素上执行一些操作时,这种方法往往更简便。
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec{ 1, 2, 3, 4, 5 };
// 使用 C++11 foreach 循环遍历向量
for (const auto & element : vec) {
std::cout << element << " ";
}
std::cout << std::endl;
return 0;
}
本例中,我们定义了一个向量,并使用 foreach 循环遍历它的每个元素。C++11 中的 foreach 循环与其他语言中的 foreach 循环类似,遍历序列中的每个元素,并在每个元素上执行指定的操作。
在本文中,我们介绍了在 C++ 中使用迭代器和 foreach 循环遍历向量的方法,这两种方法都可以方便地遍历向量中的元素。在执行遍历操作时,我们可以通过选择适合特定任务的方法自由地选取自己喜欢的方法。