2011-08-07 9 views
0

C++では、C#ディクショナリのような文字列とintを格納するための一時的なコンテナを作成する最も簡単な方法は何でしょうか?文字列と一致とカウントのためのintのコンテナ?

コンテナのコンテンツは、スペースで区切られた各ワードはキー入力文字列から来る、および0.1

Dictionary<string, int> Options = new Dictionary<string, int>(); 
Options.Add("xyz", 0); 
Options.Add("abc", 0); 
Options.Add("dfg", 0); 

各スタートキーのすべての値は、それからに対してそれを比較する必要がユーザーオプション、のようなもの:

if (Options.ContainsKey(user_opt)) 
    Options[user_opt]++; 

は、私が最初にベクトルで何かをしようとしていたが、C++での私の知識はほとんど0であるので、私はほとんどそれでstuck'edています。ベクターで

これは私が得たものである:

vector<string> Options; 
boost::split(Options, m_StartMode, boost::is_any_of(" ")); 

答えて

5

使用std::mapまたはstd::unordered_map店舗のキー、値。

std::map<std::string, int> Options; 
Options.insert(std::make_pair("xyz", 0)); 
Options.insert(std::make_pair("abc", 1)); 

その後キーが存在するかどうかを確認するためにmap::findを使用します。

std::map<std::string,int>::iterator iter; 
iter = Options.find(user_opt); 

if(iter != Options.end()) 
    iter->second++; 
+0

作業をうまくやってくれてありがとう、ありがとうキーが最も大きい値を持っているかどうかを確認してキー名を返す簡単な方法がありますか? – Guapo

+0

そのためには、独自のコードを記述する必要があります。 'std :: max_element'関数を使うことができますが、独自の関数を書く必要があります。 – Ajay

2

std::mapを見てみましょう。

+0

こんにちは、これはあまりにも多くの質問をするかもしれないが、あなたが私に練習しようとしているものに基づいて私に例を示すことは可能でしょうか? – Guapo

+0

@Guapo:Ajayの答えは良い例です。 –

+0

確かにそうです;) – Guapo

関連する問題