获取向量 c++ 中的字符串计数
Getting count of strings in vector c++
我有这个向量
vector <string> data
data = ["this is", "data that", "is in", "this is", "vector", "vector", "vector"]
如何获得一个向量(或 2D 数组)来删除重复项,而是具有每个第 i 个条目的计数?
即
results = [("this is", 2), ("data that", 1), ("is in", 1), ("vector", 3)]
简单的解决方案是将唯一值及其计数累积到地图中:
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++11 中,如何查找并返回以给定字符串开头的字符串向量中的所有项?
- 在将字符串放入字符串向量时遇到问题?
- 如何从字符串向量构造对象并避免复制?
- 如何在目录及其子文件夹中构建文件名字符串向量?
- 当映射包含字符串向量作为值时,从值中获取键的有效方法
- 将字符串向量中的字符串放入主字符串中
- 如何在 c++ 中从字符串向量中读取
- 用字符串的向量分配字符串向量
- 如何使用 STL 算法将整数向量转换为字符串向量?
- C++ 中字符串向量的索引
- 如何根据第二列/第三列等对字符串向量进行排序?
- 如何从输入中获取字符串向量?
- 使用 C++-17,如何从字符串向量填充元组
- 对于循环增量器不能用作字符串向量的索引
- 我有一个返回字符串向量的函数.它需要两个字符串,并且返回一个字符串中缺少的字符串
- 如何从字符串向量中选择第 n 个位置?
- 如何将csv中的数据放入c++中的字符串向量中,而绝对没有任何作用
- 反转不带反转函数的字符串向量
- 如何在字符串向量中指向const int
- 如何在字符串向量中找到某个值