如何在std :: vector中查找项的位置

fee*_*ree 3 c++ std stdvector

我的问题非常类似于如何在std :: vector中找到一个项目?但是,我想更进一步,假设我正在搜索的项目在向量中出现了几次,我也希望在向量中获得它的位置.例如,我拥有的矢量是[ 1 3 4 3 7],我要搜索的项目是3.然后项目的位置是13.使用该std::find函数,我只能在向量中获得它的第一个位置.有任何想法吗?

Sir*_*Guy 7

只需将它粘在一个循环中,

    auto i = std::find(v.begin(), v.end(), n);
    std::vector<std::size_t> result;
    while(i != v.end())
    {
      result.push_back(std::distance(v.begin(), i));
      i = std::find(i + 1, v.end(), n);
    }
Run Code Online (Sandbox Code Playgroud)