我从文件中读取了一些字符串,我需要忽略我已经处理过的字符串。首先我的想法是创建vector<std::string>
我将在其中存储字符串,并在收到新字符串后检查它是否已经在 vector 中。但是后来我认为我可以只使用 std::string
来做同样的事情。 ,我认为它更快并且使用更少的内存,但是这种方式在使用 vector 时并不那么明显。哪种方法更好?
最佳答案
更好的解决方案是将您读取的字符串存储在 std::set<string>
中.
集合查找通常比 vector
中的查找更快,因为 C++ 标准库中的集合被组织为二叉树。如果您将所有字符串放在一个长字符串中,您的搜索将保持线性,并且您还有一个问题需要解决:处理单词别名。如果没有分隔符,您将无法按原样连接字符串,因为您无法区分 "abc"+"xyz"
和 "abcxyz"
关于c++ - 仅威胁独特的字符串——什么是更快的 vector<std::string> 或只是 std::string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13791658/