我有一个string类型的向量,其中包含以下内容:
tpNums contains: 2 15 38 43 50 5 14 16 29 53
我试图获取向量的内容并计算向量中每个数字出现的次数,在这种情况下它们只出现一次;以下代码:
std::map<std::string, std::size_t> results;
std::for_each(begin(tpNums), end(tpNums), [&](std::string const& s)
{
++results[s];
});
我的问题是,如何输出结果地图的内容?
是否有更容易解决我的问题或这是唯一的方法?
编辑:
我试过这个:
std::map<std::string, std::size_t> results;
std::for_each(begin(tpNums), end(tpNums), [&](std::string const& s)
{
++results[s];
cout << results[s];
});
输出:1112
我不认为我正在输出正确的东西,我尝试了不同的方法,但他们要么显示错误,要么输出错误的东西
答案 0 :(得分:2)
要转储地图内容,您可以使用常规map::cbegin
/ map::cend
循环:
for (auto it = results.cbegin(); it != results.cend(); ++it)
std::cout << it->first << " => " << it->second << '\n';
或者,如 @leemes 所述,只需
for (auto& pair : results)
std::cout << pair.first << " => " << pair.second << '\n';
如果你有预C ++ 11编译器,那么map::begin
/ map::end
:
for (std::map<string, size_t>::iterator it = result.begin(); it != result.end(); ++it)
std::cout << it->first << " => " << it->second << '\n';