連想配列を使っていると、キーの集合だけ、値の集合だけを作成したいことがある。そんな時はどうするのがスマートなのだろうか。
1.for 文で地道に拾う
C++ っぽくないので却下。
2.for_each 式+ラムダ式で拾う
using namespace std; void separate(unordered_set<MapKey> key_set, unordered_key<MapValue> value_set, const unordered_map<MapKey, MapValue> map) { for_each(begin(map), end(map), [&key_set, &key_value] (const pair<MapKey, MapValue> &i) { key_set.insert(i->first), value_set.insert(i->second) }); }
Java と違って標準の抜き出しメソッドを用意していないのは set とか他のクラスに実装する可能性を考えているからだろうか。