1. ホーム
  2. c++

unordered_mapからキーと値のリストを取得する

2023-09-26 02:26:26

質問

リストを取得する最も効率的な方法は何でしょうか ( vector のキーと値のリスト () を得る最も効率的な方法は何ですか? unordered_map ?

具体的に、問題のマップが unordered_map<string, double> . であるとすると、そのキーを vector<string> として、そして値は vector<double> .

unordered_map<string, double> um;

vector<string> vs = um.enum_keys();
vector<double> vd = um.enum_values(); 

マップを反復処理し、結果を収集することができますが、より効率的な方法はありますか? もっと効率的な方法はないでしょうか?普通の地図でも使える方法があればいいのですが。 というのも、私はそちらに乗り換えるかもしれないので。

どのように解決するのですか?

はい、どうぞ。

std::vector<Key> keys;
keys.reserve(map.size());
std::vector<Val> vals;
vals.reserve(map.size());

for(auto kv : map) {
    keys.push_back(kv.first);
    vals.push_back(kv.second);  
} 

効率はおそらく改善されるでしょうが、それはそれです。しかし、あなたは2つのコンテナで操作しているので、その事実を隠せるようなSTLマジックはありません。

Louisが言ったように、これはSTLのどのような map または set のコンテナを使用することができます。