そのキーを開始し、特定の文字列を取得値:C++のstd ::マップ<はstd ::文字列、整数>私は、このような方法でのstd ::マップを使用してい
#include <map>
#include <string>
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
map<string, int> my_map;
my_map.insert(pair<string, int>("Ab", 1));
my_map.insert(pair<string, int>("Abb", 2));
my_map.insert(pair<string, int>("Abc", 3));
my_map.insert(pair<string, int>("Abd", 4));
my_map.insert(pair<string, int>("Ac", 5));
my_map.insert(pair<string, int>("Ad", 5));
cout<<my_map.lower_bound("Ab")->second<<endl;
cout<<my_map.upper_bound("Ab")->second<<endl;
return 0;
}
キーが特定の文字列(たとえば "Ab")で始まるすべての値を取得したいと思います。 map :: lower_boundを使用してイテレータを簡単に開始できます。しかし、どうすれば上限を得ることができますか?下限から始まってセット全体を反復して、 "Ab"で始まるすべてのキーをチェックする必要がありますか?
この特定のケースでは、my_map.lower_bound( "Ac")はそれを行うようです –
"Ac"の境界線を取得できませんか? bとcの間に手紙はありません。 – stardust
私はより一般的なアプローチが必要です。例は問題を説明することに過ぎませんでした。私はどんな種類の文字列でも構いません。マップにはあらゆる種類の文字列を含めることができます。 – Dejwi