📌  相关文章
📜  c++ 如何循环遍历一个向量而不是最后一个元素 - C++ (1)

📅  最后修改于: 2023-12-03 14:59:48.890000             🧑  作者: Mango

C++ 如何循环遍历一个向量而不是最后一个元素

在C++中,vector是一个非常常用的数据结构,其可以方便地实现动态数组的功能,但在循环遍历时需要注意,否则可能会出现只遍历到最后一个元素的情况。本篇文章将介绍如何正确地循环遍历一个向量并避免此类问题。

普通循环遍历

普通的循环遍历方法如下:

vector<int> v = {1, 2, 3};
for(int i=0; i<v.size(); i++) {
    cout << v[i] << endl;
}

这种方法可以很好地遍历整个向量,但是在某些场景下却不太可靠,比如在循环中删除元素时就会发生问题。

迭代器遍历

迭代器的好处是它能够指向容器中的某个元素,并能够进行增加、减少等操作,其避免了在循环中删除元素或将元素插入到向量中时可能出现的问题。示例如下:

vector<int> v = {1, 2, 3};
for(auto it=v.begin(); it!=v.end(); it++) {
    cout << *it << endl;
}

其中v.begin()指向向量的第一个元素,v.end()指向向量的最后一个位置之后的位置,由于不包含在向量的范围内,因此循环条件为it!=v.end()

范围for循环

现在在C++11之后,可以使用范围for循环来遍历容器,避免了使用迭代器的繁琐。

vector<int> v = {1, 2, 3};
for(auto i : v) {
    cout << i << endl;
}

其中i依次指向v中的每一个元素。

结论

以上三种方法均可以完成对向量的遍历操作,但是使用范围for循环可以让代码更加简洁,同时也能避免由于使用普通的循环而导致的遍历不完全的问题。