C++ 如何在C++;

C++ 如何在C++;,c++,c++11,C++,C++11,我需要找到一个向量searchvec;存在于向量containerVec;。一种方法是在vector containerVec上迭代;并查看containerVec中是否存在searchVec。在C++函数中有什么可以帮助我做同样的事情吗? 另外,我的searchVec大小为100万vector 例如,如果我的searchVec是(9,28,4,2) 我的containerVec是((1,3678,27),(9,28,4,2),(595,85,52))。然后searchVec(9,28,4,2)

我需要找到一个
向量searchvec
;存在于
向量containerVec
;。一种方法是在vector containerVec上迭代
;并查看containerVec中是否存在searchVec。在C++函数中有什么可以帮助我做同样的事情吗?
另外,我的searchVec大小为100万vector

例如,如果我的searchVec是(9,28,4,2) 我的containerVec是((1,3678,27),(9,28,4,2),(595,85,52))。然后searchVec(9,28,4,2)出现在((1,3678,27)、(9,28,4,2)、(595,85,52))中。但是,如果我的searchVec是(23,84,25,11),则它不存在于containerVec中

编辑:我尝试了std::find,但perf工具显示它花费的时间最多。是否有其他我可以使用的数据结构


这不是复制品。正如我在问题std::find中提到的,它的性能很差。此外,u标记为nowhere的副本谈到了性能问题

Crosscororrelate searchvec与containervec

en.wikipedia.org/wiki/Cross-correlation

这可以按如下所示进行:


这将为您提供containervec与searchvec的比较部分的相似性

将searchvec与containervec交叉关联

en.wikipedia.org/wiki/Cross-correlation

这可以按如下所示进行:


这将为您提供containervec与searchvec的比较部分的相似性

使用STL查找功能

请记住,还有一个find_if函数,如果您的搜索更复杂,也就是说,如果您不只是在寻找一个元素,而是想看看是否有一个元素满足某个条件,例如,以“abc”开头的字符串,则可以使用该函数。(find_if将为您提供一个指向第一个此类元素的迭代器)


请参阅此链接:

使用STL查找功能

请记住,还有一个find_if函数,如果您的搜索更复杂,也就是说,如果您不只是在寻找一个元素,而是想看看是否有一个元素满足某个条件,例如,以“abc”开头的字符串,则可以使用该函数。(find_if将为您提供一个指向第一个此类元素的迭代器)


请参阅此链接:

当包含的元素具有可比性时,向量将按字典进行比较。因此,
向量
可以免费获得其比较函数(除非您想指定不同的行为)。在中,您可以看到为什么
std::find
可以使用
vector

#包括
#包括
#包括
int main()
{
std::向量v1{1,2,3};
std::向量v2{1,2,3};
std::向量v3{3,4};

std::coutVectors compare当包含的元素是可比较的时,按字典顺序进行比较。因此
vector
可以免费获得其比较函数(除非您想指定不同的行为)。在中,您可以看到为什么
std::find
可以使用
vector
的容器

#包括
#包括
#包括
int main()
{
std::向量v1{1,2,3};
std::向量v2{1,2,3};
std::向量v3{3,4};

std::cout你想要什么?你搜索的向量的内容与其他样本向量的内容相同吗?或者你真的搜索的对象的名称与你正在搜索的对象相同吗?containerVec
中存在的
searchVec的含义是什么?@Klaus我试图通过一个例子来解释这一点在我的question@DavidWoo我不想检查两个向量是否相等…正如我在问题中提到的..这是通过在containerVec上迭代解决问题的方法之一..但正如前面提到的,我正在搜索一个有效的实现。我搜索的是:是否有可能找到searchVec是否在containerVec中抱歉-在这种情况下,我是不知道你在问什么。那么我想问题应该是“如何有效地比较两个容器和多个项目的相等性?”在这种情况下,这个问题可能会帮助您了解您的要求?您搜索的向量的内容与其他样本向量的内容相同吗?或者您真的搜索的对象具有您正在搜索的名称吗?containerVec中存在的
searchVec的含义是什么?@Klaus我试图解释在我的question@DavidWoo我不想检查两个向量是否相等…正如我在问题中提到的..这是通过在containerVec上迭代求解的方法之一..但正如前面提到的,我正在搜索一个有效的实现。我正在搜索的是:是否有可能找到searchVec是否在cont中对不起,在这种情况下,我不确定你在问什么。那么我想问题应该是“如何有效地比较两个容器中的许多物品是否相等?”在这种情况下,这个问题可能会帮助你
#include <iostream>
#include <vector>
#include <algorithm>

int main()
{
    std::vector<unsigned> v1{ 1, 2, 3 }; 
    std::vector<unsigned> v2{ 1, 2, 3 }; 
    std::vector<unsigned> v3{ 3, 4 };

    std::cout << (v1 == v2) << std::endl;
    std::cout << (v1 < v3) << std::endl;
    std::cout << (v3 < v2) << std::endl;

    std::vector<std::vector<unsigned>> vv { v1, v2, v3 }; 

    auto it = std::find(vv.begin(), vv.end(), v3); 
    if (it != vv.end())
    {
        std::cout << "I found v3, it has the following elements\n"; 
        for (auto &&a : *it)
        {
            std::cout << a << std::endl;
        }
    }        
}