スポンサーリンク

| キーワード:

vectorの内容から重複を削除する

vectorの内容から重複を削除するには、sort→unique→eraseの順に実行する。

この時、sortはコンテナごとに違う関数を使用しなければいけなかったりするので、vector以外にも使いたいなら多少の工夫が必要となる。

#include <iostream>
#include <algorithm>
#include <vector>
#include <list>

///////////////////////////////
// ソート関数
template<class T>
inline void container_sort(std::vector<T>& v) {
  std::sort(v.begin(), v.end());
}
template<class T>
inline void container_sort(std::list<T>& v) {
  v.sort();
}
////////////////////////////// // 重複削除関数 template<class T> void vec_unique(T& v) { container_sort(v); v.erase( std::unique( v.begin(), v.end()), v.end() ); }
int main() { std::vector<int> v{ 4,8,2,5, 4,8,2,5, 9,9,9,5, 5,2,3,3 }; //重複削除 vec_unique(v); for (auto it = std::begin(v); it != std::end(v);++it) { std::cout << *it << std::endl; } int i; std::cin >>i; }

2 件のコメント

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: