STL如何查找多个相同的值
STL怎么查找多个相同的值?
迭代器只能找到第一个4出现的位置,但是后面的4相当于都没找到。我想输出所有的4存在的位置该怎么做?难道还要写个循环item++
有没有现有的比较快的查找方式,还是说要加快查找速度得自己写个算法?
------解决方案--------------------
你选择的数据结构是顺序表,又没有排序,查找的时间复杂度就只能是O(N)。
遍历一遍就行了,没有什么快速的方法。
------解决方案--------------------
多个键值希望怎么返回呢,遍历一次效率还好了
------解决方案--------------------
boost::multi_index
vector<int> vec = {1, 2, 3, 4, 4, 5, 6, 8, 4, 5, 2, 1, 4, 3, 4};
vector <int>::iterator item = find(vec.begin(), vec.end(), 4);
size_t num = count(vec.begin(), vec.end(), 4);
迭代器只能找到第一个4出现的位置,但是后面的4相当于都没找到。我想输出所有的4存在的位置该怎么做?难道还要写个循环item++
for (auto item = vec.begin(); item < vec.end(); item++)
{
if (*item == 4)
cout << distance(vec.begin(), item) << " ";
}
有没有现有的比较快的查找方式,还是说要加快查找速度得自己写个算法?
------解决方案--------------------
你选择的数据结构是顺序表,又没有排序,查找的时间复杂度就只能是O(N)。
遍历一遍就行了,没有什么快速的方法。
------解决方案--------------------
多个键值希望怎么返回呢,遍历一次效率还好了
------解决方案--------------------
boost::multi_index