我的目标是将一个向量拆分为两部分:具有唯一值和重复项。拆分向量以独特和重复C++
例如我已经排序vector myVec=(1,1,3,4,4,7,7,8,9,9)
应分成myVecDuplicates=(1,7,4,9)
和myVecUnique=(1,4,7,9,3,8).
所以myVecDuplicates包含具有重复的所有值而myVecUnique包含的所有值,但是在单个实施例。
订单无关紧要。我的想法是使用独特的,因为它将矢量分成两部分。但是我的代码运行有问题。
vector<int> myVec(8)={1,1,3,4,4,7,8,9};
vector<int>::iterator firstDuplicate=unique(myVec.begin(),myVec.end());
vector<int> myVecDuplicate=myVec(firstDuplicate,myVec.end());\\here error accures that says ' no match for call to '(std::vector<int>) (std::vector<int>::iterator&, std::vector<int>::iterator)'
vector<int> myVecUnique=myVec(myVec.begin()+firstDuplicate-1,myVec.end());
运行此代码后,我得到一个错误,指出(第2行) '敌不过呼叫'(标准::向量)(的std ::矢量::迭代器&,性病::矢量::迭代器)'
请帮助我了解错误的来源或者可能提出一些更优雅和快速的方法来解决我的问题(无散列表)!
你需要为std ::在使用std :: unique之前排序vector。获取重复项有点复杂。 –
我运行代码的向量是排序的 – Bogdan
唯一不删除所有重复项,但只有连续的。要么你必须先排序或以不同的方式执行 – user463035818