如何沿向量 C++ 的长度找到数字的索引?
Posted
技术标签:
【中文标题】如何沿向量 C++ 的长度找到数字的索引?【英文标题】:How do I find the indices of a number along the length of vector C++? 【发布时间】:2017-04-04 14:50:14 【问题描述】:假设我有一个向量 A = 1,1,1,0,0; 向量标头中是否有任何内置函数来查找重复 A 的向量的所有索引? 假设 1,返回, 0,1,2 对于 0,3,4
如果没有,有什么省时的方法吗?
【问题讨论】:
欢迎来到 ***.com。请花一些时间阅读the help pages,尤其是名为"What topics can I ask about here?" 和"What types of questions should I avoid asking?" 的部分。也请使用tour 并阅读有关how to ask good questions 的信息。最后请学习如何创建Minimal, Complete, and Verifiable Example。 基本上你会想要创建一个直方图,而不是计算你想要注册索引的出现。这可以在O(N)
中完成。
【参考方案1】:
如果没有,有什么省时的方法吗?
对向量进行排序并使用std::equal_range
查找迭代器范围,然后将它们转换为索引。如果您无法对向量进行排序,请创建索引向量,对其进行排序并将其范围复制到结果中。
【讨论】:
感谢@Slava 的回答【参考方案2】:如果向量已排序或可以排序,则可以使用 std::equal_range。
http://en.cppreference.com/w/cpp/algorithm/equal_range
【讨论】:
感谢@Paul 的回答以上是关于如何沿向量 C++ 的长度找到数字的索引?的主要内容,如果未能解决你的问题,请参考以下文章