【回転】C++vectorの重量除去の2つの方法
【回転】C++vectorの重量除去の2つの方法
このブログから
第1の方法はsetの特性を簡単に利用することであり、この部分のコードは比較的簡単で、直接codeに行きます.
2つ目の方法はsortとunique関数を結合することです
Unique()関数は、隣接して重複する要素をvectorの末尾に配置し、最初の重複要素を指す反復器に戻り、この要素から最後の要素までのすべての要素をerase関数で消去します.
したがって、繰り返し要素がスタックされunique()関数が呼び出され、erase関数が呼び出されて繰り返しが削除されます.コードは次のとおりです.
上記のコードの
このブログから
第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++)
に等しい.