计算字符串向量中的出现次数

时间:2014-10-17 23:14:08

标签: c++ string vector map

我有一个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

我不认为我正在输出正确的东西,我尝试了不同的方法,但他们要么显示错误,要么输出错误的东西

1 个答案:

答案 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';