スポンサーリンク
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 件のコメント
>>vector意外にも使いたいなら
以外にも、ですね
ななし様
ご指摘いただきありがとうございました。