-1

私はC++が初めてです。C++ でa からlistaにコピーする方法を知る必要があります。mapコードサンプルは素晴らしいでしょう。

4

5 に答える 5

3

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()));

ただし、マップは同じキーを持つ値を保持できないため、「コピー」が期待どおりに機能しない可能性があることに注意してください。

于 2012-05-14T12:58:31.830 に答える
3

コンストラクターを使用できます。

std::list<std::pair<int, std::string>> thelist = /* ... */ ;
std::map<int, std::string> themap(thelist.begin(), thelist.end());

リストには、マップに適したキーと値のペアが含まれている必要があります。

于 2012-05-14T13:05:26.220 に答える
1

と は直接互換性がないcopyため、ソースとlist宛先mapには使用できません。copylistmap

于 2012-05-14T12:56:53.527 に答える
0

リストから値を出力する方法と、マップに値を追加する方法の例がオンラインでたくさんあります。だからここでは繰り返さない。cplusplus.com を参照してください (ただし、すべての人が利用できるわけではありません)。

警告: マップは一意にキー付けされた値のみを格納するため、マップ アイテムとリスト アイテムの間に 1:1 のマッピングが存在しない場合があります (つまり、マップで同じ値またはそれ以下の値が取得されます)。その理由を最初に明確にしてください。各コンテナを使用しています。

于 2012-05-14T13:13:05.647 に答える
0

list クラスは、名前が示すように、オブジェクトのリストです。ただし、マップはペアのリストです。したがって、果物「リンゴ」、「ナシ」、「スイカ」のリストがある場合、それらをマップに入れることができますが、それらを何か (できれば意味のあるもの) にマップする必要があります。

元:

map<string, string> mapFruits;
mapFruits["apple"] = "red";
mapFruits["pear"] = "yellow";
mapFruits["watermelon"] = "green";

于 2012-05-14T13:00:04.620 に答える