📜  c++ 循环遍历向量 - C++ (1)

📅  最后修改于: 2023-12-03 15:29:52.673000             🧑  作者: Mango

C++ 循环遍历向量

在 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 循环

使用 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 循环遍历向量的方法,这两种方法都可以方便地遍历向量中的元素。在执行遍历操作时,我们可以通过选择适合特定任务的方法自由地选取自己喜欢的方法。