的矢量I具有載體(loops
)的矢量內重複的載體。一些內部向量是重複的,但它們的元素順序不一樣。現在,我想獲得一個矢量矢量而不需要任何重複的內部矢量。 這裏是我的vec vec的例子; (91826119),(91826189),(91825169),(11452611),(11264511),(16492511),(164925119),(1118451911),(1145451111),(1164451111),(1164451111), ),(16 25 49 16),(18 9 11 26 18),(18 9 16 25 18),(25 16 49 25),(26 11 45 26))取出其中包含的整數值向量
爲了確定是否有內部矢量另一個內部向量的副本;我開發了一個功能IsDuplicate
。這告訴我,(9 18 26 11 9) and (9 11 26 18 9)
重複,然後我可以刪除第二個或所有其他重複。
要刪除我的矢量的矢量內複製的載體,我已經實現以下代碼。
Vector<vector<int> > loops;
Vector<vector<int> > ::iterator no1, no2;
Int setno1, setno2;
for (no1=loops.begin(), setno1=0; no1!=loops.end(); no1++, setno1++){
set1 = *no1;
for (no2=loops.begin()+setno1, setno2=setno1; no2!=loops.end(); setno2++){
set2 = *no2;
if (set2.IsDuplicate(set1)) loops.erase(loops.begin()+setno2);
else no2++;
}
}
它花了很長時間,我以爲我的程序是crasihing。所以,請幫我解決這個問題。
也,我試圖與此有關。這有效,但我得到了一個錯誤的答案。請任何幫助。
01 int first=0; bool duplicates=false;
02 do {
03 set1 = loops[first];
04 for (no2=loops.begin()+1, setno2=1; no2!=loops.end(); setno2++){
05 set2 = *no2;
06 if (set2.IsPartOf(set1)){
07 loops.erase(loops.begin()+setno2);
08 duplicates = true;
09 }
10 else no2++;
11 }
12 first++;
13 } while(!duplicates);
「墜毀」怎麼樣?未捕獲的異常?分割錯誤,也許? – 2011-10-02 12:29:51
爲什麼不製作集合或多集合的向量?那麼識別重複項會更容易。甚至還有一套。 –
@KerrekSB集合(1,1,2)和(1,2,2)是否相等? –