0

我从文件中读取了一些字符串,我需要忽略我已经处理过的字符串。首先,我的想法是创建vector<std::string>我将存储字符串的位置,并在收到新的字符串后检查它是否已经在向量中。但是后来我虽然可以使用 just 来做同样的事情std::string,但我认为它更快并且使用更少的内存,但是这种方式在使用 vector 时并不那么明显。哪种方法更好?

4

1 回答 1

2

更好的解决方案是将您读过的字符串存储在std::set<string>.

集合查找通常比 . 中的查找更快vector,因为 C++ 标准库中的集合组织为二叉树。如果您将所有字符串放在一个长字符串中,您的搜索将保持线性,并且您还有一个问题需要解决:处理单词别名。如果没有分隔符,您将无法按原样连接字符串,因为您无法区分"abc"+"xyz""abcxyz"

于 2012-12-09T20:48:16.150 回答