小编som*_*ere的帖子

如何获取容器中某个对象的迭代器?

我目前正在尝试复制a的一部分std::vector,从第一个值开始,直到"遇到"一系列值.我主要使用STL算法,尤其是std::find_if()(我知道还有其他方法可以实现第一句中所述的目标,但我主要是为了理解STL,所以使用它们会破坏基本目的).

作为一个例子,假设一个vector保持整数元素(originalvec在代码中)被复制,直到第一个6,然后直接连续7遇到.我知道如何比较6,然后我想在lambda的相同调用中进行比较,如果在6后面有一个7.我认为(不确定)为此,我需要得到一个迭代器6,然后使用std::advance()或者只使用operator++迭代器并将解除引用的值与7进行比较.但是,我不知道如何获得6 /当前比较的数字的迭代器?

#include <algorithm>
#include <vector>

using namespace std;

int main() {
    vector <int> originalvec = { 4, 8, 7, 6, 55, 2, 6, 7, 8 };
    vector <int> newvec;

    copy(originalvec.begin(),
        find_if(originalvec.begin(), originalvec.end(), [](int curnum) {
            return (curnum == 6);
        }),
        back_inserter(newvec));
    //why does newvec.begin() (instead of back_inserter(newvec)) not work?

    //current result:   newvec = {4, 8, 7}
    //wanted result :   newvec = {4, 8, 7, 6, 55, …
Run Code Online (Sandbox Code Playgroud)

c++ iterator stl find visual-studio

-1
推荐指数
1
解决办法
57
查看次数

标签 统计

c++ ×1

find ×1

iterator ×1

stl ×1

visual-studio ×1