威胁只有唯一的字符串 - 什么是更快的vector <std :: string>或者只是std :: string </std :: string>

时间:2012-12-09 20:47:01

标签: c++ string stl vector find

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

1 个答案:

答案 0 :(得分:2)

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

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