私はC++が初めてです。C++ でa からlist
aにコピーする方法を知る必要があります。map
コードサンプルは素晴らしいでしょう。
5 に答える
std::mapは、キーと値のペアを保持する連想コンテナーです。std::listは値のみを保持します。したがって、リストに適切なタイプのキーと値のペアが含まれていない限り、この質問は意味がありません。
リストにターゲット マップの値の型に一致するものが含まれている場合std::pairs
は、イテレータ コンストラクタを使用してマップを初期化できます。
std::list<std::pair<std::string, int>> = ....;
std::map<std::string, int> m(l.begin(), l.end());
std::copy
または、他の場所で提案されているように、アルゴリズムを使用できます。
std::map<std::string, int> m1;
std::copy(l.begin(), l.end(), std::inserter(m1, m1.begin()));
ただし、マップは同じキーを持つ値を保持できないため、「コピー」が期待どおりに機能しない可能性があることに注意してください。
コンストラクターを使用できます。
std::list<std::pair<int, std::string>> thelist = /* ... */ ;
std::map<int, std::string> themap(thelist.begin(), thelist.end());
リストには、マップに適したキーと値のペアが含まれている必要があります。
と は直接互換性がないcopy
ため、ソースとlist
宛先map
には使用できません。copy
list
map
リストから値を出力する方法と、マップに値を追加する方法の例がオンラインでたくさんあります。だからここでは繰り返さない。cplusplus.com を参照してください (ただし、すべての人が利用できるわけではありません)。
警告: マップは一意にキー付けされた値のみを格納するため、マップ アイテムとリスト アイテムの間に 1:1 のマッピングが存在しない場合があります (つまり、マップで同じ値またはそれ以下の値が取得されます)。その理由を最初に明確にしてください。各コンテナを使用しています。
list クラスは、名前が示すように、オブジェクトのリストです。ただし、マップはペアのリストです。したがって、果物「リンゴ」、「ナシ」、「スイカ」のリストがある場合、それらをマップに入れることができますが、それらを何か (できれば意味のあるもの) にマップする必要があります。
元:
map<string, string> mapFruits;
mapFruits["apple"] = "red";
mapFruits["pear"] = "yellow";
mapFruits["watermelon"] = "green";
等