用于字符串和int的容器用于匹配和计数?

时间:2011-08-07 12:27:47

标签: c++ string compare int containers

在C ++中,创建一个临时容器来存储字符串和int的最简单方法就像C#字典一样,我可以轻松地将字符串键与另一个字符串匹配,并增加或减少条目值int?

容器的内容来自一个字符串,其中每个用空格分隔的单词是一个键输入,每个键的所有值都以0开头。

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,所以我大部分都被卡住了。

使用矢量这就是我得到的:

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

2 个答案:

答案 0 :(得分:5)

使用std::mapstd::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++;

答案 1 :(得分:2)

看看std::map