【发布时间】:2012-05-23 23:50:35
【问题描述】:
我有这个向量
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)]
【问题讨论】:
-
Xeo,我尝试了很多方法。即对于 data 中的每个字符串 s,查看 data 中的其余元素,并为 s 的每个匹配项增加计数。看起来这是 O(n^2) 但我正在寻找更高效的东西
-
您可能想尝试
std::map<string, int>... 您可以按字符串索引,并根据需要增加计数器。maps 按键(此处为字符串)排序,不能有重复项。获取未排序的字符串列表/向量并填充地图是 O(N x log2N) 操作。 -
对我来说这听起来像是一个冲突(哈希)表。试着查一下。
标签: c++ string stl vector count