如何沿向量 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++ 的长度找到数字的索引?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中返回从零开始的向量索引

numpy如何沿维度拆分数组?

如何在 R 中创建一个长度为零的数字向量

如何在 AVX 向量中找到元素的索引?

如何在向量的给定索引范围内找到最小元素?

如何找到向量中的最大元素(C++)?