1. ホーム
  2. c++

[解決済み] std::map でキーが std::string である場合のソート処理

2022-03-07 09:27:05

質問

std::mapのmymapを持っています。

さて、このようにマップに値を挿入すると

std::map <string, string> mymap;
mymap["first"] = "hi";
mymap["third"] = "how r you";
mymap["second"] = "hello";

さて、私はマップを繰り返し、sorted(keys)の方法で値を表示したいと思います。

map<string, string>::iterator itr;
for(itr = mymap.begin(); itr != mymap.end(); itr++)
{
   string newline = itr->second;
   cout << newline << endl;
}

出力する必要があります。

hi 
hello 
how r you 

デフォルトではmapはソートされたキーで保存されると思ったのですが、入力で与えたのと同じ順序で出力されています。この場合、ソート関数を用意する必要があるのでしょうか?それとも、mapを反復処理する前に何か特別なことをする必要があるのでしょうか?

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

の要素は std::map は(デフォルトでは)次のように並べられます。 operator< がキーに適用されます。

投稿されたコードに若干の編集を加えたところ、期待通りに動作しました。

std::map <string, string> mymap;
mymap["first"]="hi";
mymap["third"]="how r you";
mymap["second"]="hello";

for (std::map<string, string>::iterator i = mymap.begin(); i != mymap.end(); i++)
{
    cout << i->second << "\n";
}

プリントする。

hi
hello
how r you