我从文件中读取了一些字符串,我需要忽略已经处理过的字符串。首先,我的想法是创建vector<std::string>
,我将在其中存储字符串,并在收到新的一个检查后是否已经在向量中。但是后来我虽然我可以使用std::string
来做同样的事情,但我认为它更快并且使用更少的内存,但这种方式并不是那么明显然后使用vector。哪种方法更好?
答案 0 :(得分:2)
更好的解决方案是将您阅读的字符串存储在std::set<string>
。
设置查找通常比vector
中的查找更快,因为C ++标准库中的集合被组织为二叉树。如果将所有字符串放在一个长字符串中,则搜索将保持线性,并且还有一个问题需要解决:处理字别名。如果没有分隔符,您将无法按原样连接字符串,因为您无法区分"abc"+"xyz"
和"abcxyz"