Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.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::includes等效项?_C++_Algorithm_Stl - Fatal编程技术网

C++ 对于未排序的范围是否有std::includes等效项?

C++ 对于未排序的范围是否有std::includes等效项?,c++,algorithm,stl,C++,Algorithm,Stl,std::includesis 如果排序范围[first2,last2]中的每个元素都是 在排序范围内找到。如果 [first2,last2]为空 重点是我的 是否有一个等效的C++算法在容器的未排序范围内复制这个函数,或者我必须通过循环来实现这个吗?< /p> < p>如果你先排序范围,排序将在O(n log n)中运行,搜索将以O(m+n)运行。时间。如果你尝试在未排序的范围内进行此操作,它将在O(m·n)时间内运行。你通常最好只进行排序 但是,您可以有效地搜索子字符串的未排序范围。这是我能

std::includes
is

如果排序范围[first2,last2]中的每个元素都是 在排序范围内找到。如果 [first2,last2]为空

重点是我的


是否有一个等效的C++算法在容器的未排序范围内复制这个函数,或者我必须通过循环来实现这个吗?< /p> < p>如果你先排序范围,排序将在O(n log n)中运行,搜索将以O(m+n)运行。时间。如果你尝试在未排序的范围内进行此操作,它将在O(m·n)时间内运行。你通常最好只进行排序


但是,您可以有效地
搜索子字符串的未排序范围。这是我能想到的最接近您要求的内容。

首先对范围进行排序?其中一个范围是在另一个属性上排序的,而不是在我想使用的
includes
上排序的,因此我需要创建第二个容器来进行排序我想你可以写
std::all_of(first2,last2,[&](const auto&e){return std::find(first1,last1,e)!=last1;})
,但它是O(MN)。哪一个更好取决于
m
n
的相对大小,不是吗?当然,但是如果你在搜索单个元素,你可以只使用
std::find
,如果m很小,你可以
std::find
找到每一个元素,并在没有找到一个元素时立即中断。因此,你可以在O中的未排序范围内这样做(mn)如果STL的时间比O(n logn)好的话。(由于引用的位置,它在实际使用中可能没有那么有效。)但是我添加了一个weasel单词。