Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 仅威胁唯一字符串-什么是更快的向量<;标准::字符串>;或者只是std::string_C++_String_Stl_Vector_Find - Fatal编程技术网

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+“\”)