私はそのstd::multimap< int, std::string >
ようなものを持っています:
1 A
1 B
1 C
1 B
1 C
1 C
mapped_type
次のように、重複のない要素のコレクションを取得したいと思います。
1 A
1 B
1 C
私の解決策は次のとおりです。
#include <map>
#include <list>
#include <string>
#include <algorithm>
int main(int argc, char* argv[])
{
std::multimap< int, std::string > mm;
mm.insert( std::make_pair(1,"A") );
mm.insert( std::make_pair(1,"B") );
mm.insert( std::make_pair(1,"C") );
mm.insert( std::make_pair(1,"B") );
mm.insert( std::make_pair(1,"C") );
mm.insert( std::make_pair(1,"C") );
auto range( mm.equal_range(1) );
std::list< std::string > ss;
std::transform(range.first, range.second,
std::back_inserter(ss),
[](const std::pair<int,std::string>& p) {
return p.second;
});
ss.sort();
ss.unique();
return 0;
}
コレクションを取得するより効率的な方法はありますか?