c++ - 这些 vector 迭代形式是否相同?

标签 c++ vector iteration

<分区>

Form 1 :

int main()
{
    std::vector<int> array{1, 2, 3, 4, 5};   

    for(auto i = array.begin(); i != array.end();) {      
        if(*i == 2 || *i == 5) {
            i = array.erase(i);
        } else {          
            i++;
        }
    }   
}

Form 2 :

int main()
{
    std::vector<int> array{1, 2, 3, 4, 5};   

    for(auto i = array.begin(); i != array.end(); i++) {
        if(*i == 2 || *i == 5) {
            i-- = array.erase(i);
        }
    }   
}

这两种形式相同吗?我可以使用一个或另一个来解决问题吗? (即与各种对象,例如链表?)。

最佳答案

这个,表格 3:

#include <vector>
#include <algorithm>

int main()
{
    std::vector<int> array{1, 2, 3, 4, 5};

    auto is_2_or_5 = [](int i) {
        return i == 2 || i == 5;
    };

    array.erase(std::remove_if(array.begin(),
                               array.end(),
                               is_2_or_5),
                array.end());

}

关于c++ - 这些 vector 迭代形式是否相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36470581/

相关文章:

C++ 文件读取库 - ANSI 和 Unicode

c++ - 在 QLabel 中绘制可缩放的 QPixmap

Java-按给定顺序迭代for循环

r - 创建多个描述性表格(带循环)并在 R 中存储为数据帧

c++ - 评估 <Classtype*> vector 中所有项目的 bool 的最有效方法,如果全部为真则返回真

java - 如何有效地迭代 Java Map 中的每个条目?

c++ - (C++) 有没有办法在循环中创建不同的矩阵?

c++ - 从特征类继承

c++ - 预分配 2D vector 时 VS2010 和 GCC4.8.1 之间的行为不一致?

android - 不能在 Android NDK 中包含像矢量这样的 C++ header