2017-04-04 71 views
-2

假設我有一個向量A = {1,1,1,0,0}; 在矢量頭中是否有內置函數來查找所有重複的向量索引? 假設爲1,返回,{0,1,2} 爲0,{3,4}如何找到沿矢量C++長度的數字的索引?

如果沒有,是否有任何時間有效的方法來做到這一點?

+1

歡迎來到stackoverflow.com。請花些時間閱讀[幫助頁面](http://stackoverflow.com/help),尤其是名爲[「我可以問些什麼話題?」]的章節(http://stackoverflow.com/help/)討論話題)和[「我應該避免問什麼類型的問題?」](http://stackoverflow.com/help/dont-ask)。請參閱[tour](http://stackoverflow.com/tour)並閱讀[如何提出良好問題](http://stackoverflow.com/help/how-to-ask)。最後,請學習如何創建[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 – Weaboo

+0

本質上你要創建一個直方圖,而不是計算你想要註冊索引的事件。這可以在'O(N)'中完成。 – NathanOliver

回答

1

如果沒有,是否有任何時間有效的方式來做到這一點?

對你的向量排序並使用std::equal_range找到迭代器範圍,然後將它們轉換爲索引。如果無法對矢量排序,則創建索引矢量,對其進行排序並將範圍從其複製到結果。

+0

謝謝@Slava的回答 – user672116