c++ - 将字符串的每个单词插入 vector 并计算每个单词的出现

标签 c++ vector dictionary

我正在尝试将字符串单词插入到 vector 中,然后让它出现。 我在这里做了重要的工作。 问题在于计算代码下方的单词计数每个字符出现的次数。

可能我是将字符插入到 vector 而不是单词中。我试图从谷歌获得解决方案,但没有得到我想要的。

#include <iostream>
#include <algorithm>
#include <map>
#include <cstring>
#include <vector>
#include <string>
#include <sstream>
#include <algorithm>
#include <unordered_map>

std::pair < int, std::string > mytransform(const std::pair < std::string, int >p)
{
    return std::pair < int, std::string > (p.second, p.first);
}

int main(int argc, char *argv[])
{
    std::string result_string=argv[1];
    std::istringstream iss;
    std::multimap < int, std::string, std::greater < int >>dst;
    std::multimap < int, std::string >::iterator rec;
    typedef std::unordered_map<std::string,int> occurrences;
    occurrences s1;
    std::vector<std::string> most;
    std::map < std::string, int >src;

    std::vector<std::string> writable(result_string.size() + 1);
    std::copy(result_string.begin(), result_string.end(), writable.begin());

    for (std::vector < std::string >::iterator it = writable.begin(); it != writable.end(); it++)
    ++src[*it];

    std::transform(src.begin(), src.end(), std::inserter(dst, dst.begin()), mytransform);
    std::multimap < int, std::string >::iterator it = dst.begin();

   for (it = dst.begin(); it != dst.end(); ++it)
    std::cout << it->second << ":" << it->first << std::endl;

    return 0;
}

输出:

technoworld@ubuntu:~/Videos/LinSocket/Modular$ ./q "one one two"
o:3
 :2
e:2
n:2
t:1
w:1
:1

应该是:

technoworld@ubuntu:~/Videos/LinSocket/Modular$ ./q "one one two"
one:2
two:1

最佳答案

#include <iostream>
#include <map>
#include <sstream>

int main() {
    std::string input =  "one one two";
    std::istringstream in(input);
    std::map<std::string, unsigned> counter;
    std::string s;
    while(in >> s) {
        ++counter[s];
    }
    for(const auto& kv: counter) {
        std::cout << kv.first << ": " << kv.second << std::endl;
    }
    return 0;
}

关于c++ - 将字符串的每个单词插入 vector 并计算每个单词的出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18590468/

相关文章:

python - 修改一个 Python "requests"模块响应对象

c++ - 如何使用成员函数映射参数包? (非递归,预折叠表达式)

c++ - 调用 pow() 时舍入结果的差异

C++ 程序输出错误的数字

c++ - 如何合并两个包含 std::unique_ptr 的 vector ?

c++ - 了解我有多少内存可用于动态 vector C++

c++ - 随机访问迭代器 - 在 C++ 中执行 vector.end() - vector.begin() = vector.size();

dictionary - 反转 f# Map <'a,Map<' b ,'T>>) -> Map<' b,Map <'a,' T>> 中的嵌套字典

c++ - std vector const_iterator 赋值访问冲突

c - 符号表与集合