我具有形式std::vector<int> a
和std::vector<double> b
的兩個向量,例如發現和擦除重複和擦除值在另一矢量
a= 1,2,3,3,4,5,6;
b=0.1, 0.3, 0.2, 0.5, 0.6, 0.1, -0.2;
兩個矢量具有相同的尺寸的和實際上他們的工作像XY對((1,0.1) , (2,0.3)...etc)
。在MATLAB我
a= 1,2,3,4,5,6;
b=0.1, 0.3, 0.5, 0.6, 0.1, -0.2;
:幸運的是,a
從少排序,以更始終
我想找到的第一個向量的副本,然後刪除他們的第一個,在我的例子輸出應該是會做這樣的事情:
b(find(diff(a) == 0)) = [];
a(find(diff(a) == 0)) = [];
我知道我能做到這一點使用循環和if語句的老式方法,但我相信有更優雅的方式來做到這一點在C++與容器和迭代器。搜索互聯網有很多例子可以清除第一個向量中的重複內容,但不能使用相同的索引來清除第二個向量中的元素。
任何幫助表示讚賞。
而不是有平行的向量爲什麼沒有一個向量存儲在一個單一的元素的兩部分數據?然後,做你想做的事情就變得微不足道了。 – NathanOliver
或者最初將數據填充到'std :: map'中,並且由於地圖不支持重複鍵,因此您不需要擦除重複項 –
您真的在'int'向量中存儲'0.3'嗎? – Galik