c++ - 获取 vector c++中的字符串计数

标签 c++ string stl vector count

我有这个 vector

vector <string> data

data = ["this is", "data that", "is in", "this is", "vector", "vector", "vector"]

如何获得一个 vector (或二维数组)来删除重复项并包含每个第 i 个条目的计数?

 results = [("this is", 2), ("data that", 1), ("is in", 1), ("vector", 3)]

最佳答案

最简单的解决方案是将唯一值及其计数累积到 map 中:

std::map<std::string, std::size_t> results;
std::for_each(begin(data), end(data), [&](std::string const& s)
{
    ++results[s];
});

这具有线性 (n lg n) 时间复杂度,但由于它必须复制每个不同的字符串值,因此可能相当昂贵。您还可以就地对列表进行排序,然后计算每个值的数量,如果您有 std::string 的移动感知实现,这可能会表现得更好。

关于c++ - 获取 vector c++中的字符串计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10729444/

相关文章:

c++ - 在模板化之前使用隐式转换

c++ - 如果指针被初始化,它也会产生崩溃

c - 使用 write() 将整数列表写入文件

python - 如何在 Python 中替换包含大括号的字符串?

c++ - 双端队列内存分配可以稀疏吗?

c++ - 用 C++ 编码的脚本语言包装 C++ 动态数组

c++ - Qt从文件中删除一行

Windows 在登录时自动启动时的 C++ 文件权限

php - 在php中计算具有固定宽度的文本 block 的高度

c++ - 在 C++11 中从 C++17 重新实现 std::map::try_emplace()?