向量中数字的第N次出现

时间:2017-05-18 10:42:06

标签: c++

假设我有一个整数向量< 1,2,3,1,3,2,1,2>我有兴趣在向量中找到第N次出现整数的索引(例如,找到整数1的第三次出现的索引,即7)。如何使用迭代器实现此目的。请帮助我提出建议。

谢谢, Sugmar。

2 个答案:

答案 0 :(得分:1)

你可以像

那样做
template<class InputIterator, class T>
size_t find_nth (InputIterator first, InputIterator last, const T& val,size_t count)
{
    size_t ret=0;
    size_t index=0;
    while (first!=last) {
       if (*first==val)
       {
        ret++;
       }
       if(ret == count)
       {
        return index;
       }
    index++;
    ++first;
  }
  return -1;
}

int main()
{
   vector<int> myInt={1,2,3,1,4,1,5,6};
   int ret=find_nth(myInt.begin(),myInt.end(),1,3);//ret is -1 if not
   std::cout<<"index : "<<ret<<std::endl;
   return 0;
}

答案 1 :(得分:1)

另一种方法可能是在索引的元素和向量的映射中存储索引,因为可能存在多次。

p Favicon made by 
    a(href="http://www.niceandserious.com/", target="_blank")= "www.niceandserious.com"
    |#{' '}from 
    a(href="http://www.flaticon.com/", target="_blank") www.flaticon.com
    |.