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