多維vector去重

2021-10-07 02:14:53 字數 1732 閱讀 9071

1> 先sort,然後才可能做unique;

2> unique完了之後,iterator指向最後乙個元素之後,於是erase從此處至end()即可。

這裡比較神奇的是sort和unique可以直接比較2個一維 vector的大小。

具體**如下:

#include

#include

#include

using

namespace std;

void

print_vec2

(vectorint>>

& vec)

}int

main()

,,,,

,,,}

;// remove redundancy

sort

(vv.

begin()

, vv.

end())

; vv.

erase

(unique

(vv.

begin()

, vv.

end())

, vv.

end())

;print_vec2

(vv)

;return0;

}

輸出為:

1 1 2 3

1 2 1 3

2 1 1 3

3 1 1 2

那麼,三重vector還能去重嗎?

能。不過本文的方法是去掉二維vector的重複,即sort與unique還可以比較二重vector, 而二維vector內部的一維部分的重複卻不會被去掉。

(由此可見,sort與unique的cmp運算元似乎是直接操作最直接元素的(對於三維vector而言就是操作二維vector;對於二維vector而言,就是操作一維vector),由此猜測該cmp運算元做的就是記憶體的值大小比較。)

**如下:

#include

#include

#include

using

namespace std;

void

print_vec3

(vector< vector< vector<

int>

>

>

& vvv)

cout <<

"\n";}

cout <<

"---------\n";}

cout <<

"}\n";}

intmain()

,,,}

,,,,

},,,

,}};

print_vec3;

sort

(vvv.

begin()

, vvv.

end())

; vvv.

erase

(unique

(vvv.

begin()

, vvv.

end())

, vvv.

end())

;print_vec3

(vvv)

;return0;

}

輸出為:

總之,多重vector也可以做sort和unique有點意思。stl的泛型程式設計還是蠻強的。

(完)

多維陣列去重

假如有這樣乙個陣列,要求找出陣列兩兩之間name相同的元素,並標記其所在陣列的索引。var arr 開始想到的笨方法就是陣列兩兩遍歷,但當資料量大的時候,這種方法的效率是極其低的,於是思考,如何能在遍歷一次的情況下,實現這個功能。var obj arr.foreach arr1,index else...

vector去重方法

1.排序以後使用unique 函式 unique函式比較的時相鄰的兩個元素,重複的放到vector尾部 sort vector.begin vector.end vector.erase unique vector begin vector end vector end unique 函式將重複的元...

PHP多維陣列去重

最近用到了乙個獲取歷史會議列表的問題,需要去這個多維陣列去重後返回返回給客戶端,這裡使用了幾個php的組裝函式,分享下,示例 如下 str res json decode str,true echo num count res result print r res result echo rrr r...