【回転】C++vectorの重量除去の2つの方法


【回転】C++vectorの重量除去の2つの方法
このブログから
第1の方法はsetの特性を簡単に利用することであり、この部分のコードは比較的簡単で、直接codeに行きます.
#include 
#include 
#include 

using namespace std;


int main()
{
    int myints[] = {1,2,3,1,1};
    int len = sizeof(myints)/sizeof(int);
    vector<int> vec(myints, myints + len);
    set<int>s(vec.begin(), vec.end());
    vec.assign(s.begin(), s.end());
    for(int x : vec)
        cout << x << ",";
    return 0;
}

2つ目の方法はsortとunique関数を結合することです
Unique()関数は、隣接して重複する要素をvectorの末尾に配置し、最初の重複要素を指す反復器に戻り、この要素から最後の要素までのすべての要素をerase関数で消去します.
したがって、繰り返し要素がスタックされunique()関数が呼び出され、erase関数が呼び出されて繰り返しが削除されます.コードは次のとおりです.
#include 
#include 
#include 

using namespace std;


int main()
{
    int myints[] = {1,2,3,1,1};
    int len = sizeof(myints)/sizeof(int);
    vector<int> vec(myints, myints + len);
    sort(vec.begin(), vec.end());
    vec.erase(unique(vec.begin(), vec.end()), vec.end());
    for(int x : vec)
        cout << x << ",";
    return 0;
}

上記のコードのfor (auto x : nums)の役割は反復コンテナ内のすべての要素であり、各要素の一時的な名前はxであり、下辺のコードfor (vector::iterator iter = nums.begin(); iter != nums.end(); iter++)に等しい.