C++11 使用std::find从某个值开始

C++11 使用std::find从某个值开始,c++11,C++11,我想做的是从向量中的某个位置开始std::find遍历向量 std::vector<int>::iterator it; for (int a = 0; a < myvector.size(); a++){ it = find(myvector.begin() + a, myvector.end(), myvector.at(a)); std::cout << *it; } std::vector::iterator; 对于(int a=0;a

我想做的是从向量中的某个位置开始std::find遍历向量

std::vector<int>::iterator it;
for (int a = 0; a < myvector.size(); a++){
    it = find(myvector.begin() + a, myvector.end(), myvector.at(a));
    std::cout << *it;
}
std::vector::iterator;
对于(int a=0;astd::cout如果要在值首次出现后搜索该值,可以尝试以下操作:

auto it2 = std::find(
    std::next(std::find(std::begin(myvector), std::end(myvector), val)),
    std::end(myvector), val);
}
它首先找到该值的第一个匹配项,然后从下一个位置再次开始搜索

你可以用 要增加迭代器,请执行以下操作:

it = find(std::next(myvector.begin(), a), myvector.end(), myvector.at(a));

如何确定某个位置?在本代码中,它试图通过int“a”来确定,但这不起作用。我不理解您的问题。您正在查找从
a
-th项开始的
a
-th项。您将始终找到它。
myvector.begin()+3
是否能正常工作这是一个XY问题。如前所述,
find()
将始终立即“查找”您要查找的内容。