c++ - 仅威胁独特的字符串——什么是更快的 vector<std::string> 或只是 std::string

标签 c++ string stl vector find

我从文件中读取了一些字符串,我需要忽略我已经处理过的字符串。首先我的想法是创建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/

相关文章:

c++ - 如何取消引用 nullptr 返回正确的对象?

c++ - 人物分类

c++ - 在 Tic Tac Toe 程序中使用数组

javascript - 将字母相加形成单词

Python > 将字符串变量传递到方法中

c++ - 在 Cygwin 中配置 clang++ 以使用 g++/gcc STL header 的最简单方法?

c++ - 从 Webservice 访问 C++ COM dll

c - 将字符串分配给 C 中 char 类型的变量

c++ - STL std::map 的 MFC 等价物

c++ - 如何使用 std::binary_search 或 std::sort 对结构数组进行排序