C++ 仅威胁唯一字符串-什么是更快的向量<;标准::字符串>;或者只是std::string
我从文件中读取了一些字符串,我需要忽略我已经处理过的字符串。首先,我的想法是创建C++ 仅威胁唯一字符串-什么是更快的向量<;标准::字符串>;或者只是std::string,c++,string,stl,vector,find,C++,String,Stl,Vector,Find,我从文件中读取了一些字符串,我需要忽略我已经处理过的字符串。首先,我的想法是创建vector,在那里我将存储字符串,并在收到新字符串后检查它是否已经在vector中。但是我认为我可以使用std::string来做同样的事情,我认为它更快,占用更少的内存,但是这种方式并不像使用vector那样明显。哪种方法更好?更好的解决方案是将已读取的字符串存储在std::set中 >查找>在 >中通常比查找快,因为C++标准库中的集合被组织为二进制树。如果将所有字符串放在一个长字符串中,搜索将保持线性,并且
vector
,在那里我将存储字符串,并在收到新字符串后检查它是否已经在vector中。但是我认为我可以使用std::string来做同样的事情,我认为它更快,占用更少的内存,但是这种方式并不像使用vector那样明显。哪种方法更好?更好的解决方案是将已读取的字符串存储在std::set
中
<> >查找>在<<代码>矢量< /> >中通常比查找快,因为C++标准库中的集合被组织为二进制树。如果将所有字符串放在一个长字符串中,搜索将保持线性,并且还有一个问题需要解决:处理单词别名。如果没有分隔符,您将无法按原样连接字符串,因为您无法区分
“abc”+“xyz”
和“abcxyz”
我可能只会使用std::set
或std::unordered\u set
,这取决于您对它们所做的操作。您在谈论什么方法?你打算如何只使用一个字符串?虽然我可以想出一些可行的方法,但知道你计划做什么很重要。那么,你打算如何只用一根弦来做呢?连接所有现有字符串?@AndreyT是的,将所有内容连接到一个std::字符串。我正在重新获取文件名,所以我知道它们只由字母、数字和点组成,我可以添加的每个新字符串都像(伪代码)一样,如果string::npos!=allstring.find(newString)然后allstring.append(“\”+newString+“\”)