C++ 查找向量的一个向量的元素是否存在于另一个向量中

C++ 查找向量的一个向量的元素是否存在于另一个向量中,c++,vector,C++,Vector,如何查看向量列或向量列(ruleList)中的元素是否存在于另一个名为ntList的向量(不是向量向量向量)中。我目前有: for(int j = 0; j < ruleList[0].size(); j++) { for(int i = 0; i < ntList.size(); i++) { if(std::find(ruleList[0][j].begin(), ruleList[0][j].end(), ntList[i]) != ruleLi

如何查看向量列或向量列(ruleList)中的元素是否存在于另一个名为ntList的向量(不是向量向量向量)中。我目前有:

for(int j = 0; j < ruleList[0].size(); j++)
{
    for(int i = 0; i < ntList.size(); i++)
    {
        if(std::find(ruleList[0][j].begin(), ruleList[0][j].end(), ntList[i]) != ruleList[0][j].end())
        {   
            ;
        }
        else
        {
            errorList.push_back(ERROR1);
            error = true;
        }
    }
}
任何帮助都将不胜感激。向量声明:

vector<string> ntList;
vector< vector<string> > ruleList(100, vector<string> (0, "0"));
向量列表;
向量规则列表(100,向量(0,“0”);

取决于您想要实现什么,或者(仅限C++11)就足够了。如果您只想检查向量中存储的值是否完全相同,大小是否相同,那么这些算法就足够好了

如果您想做更多的工作,例如将丢失的值存储到其他地方,那么最好使用手写循环。假设您在这两种情况下都处理std::vector,并且不使用C++11:

for (std::vector<int>::const_iterator iter_rule_list = ruleList[0].begin(); iter_rule_list != ruleList[0].end(); ++iter_rule_list)
{
    int const value = *iter_rule_list;
    if (std::find(ntList.begin(), ntList.end(), value) == ntList.end())
    {
        // value missing in ntList
    }
}
for(std::vector::const_iterator iter_rule_list=ruleList[0]。begin();iter_rule_list!=ruleList[0]。end();++iter_rule_list)
{
int const value=*iter\u规则列表;
if(std::find(ntList.begin(),ntList.end(),value)==ntList.end())
{
//ntList中缺少值
}
}

“我有一个错误”现在我们没有。发布完整错误。错误C2678:二进制“==”:未找到接受“char”类型左侧操作数的运算符(或没有可接受的转换)。如果我在上面将ntList[I]更改为ntList[I][0],它编译得很好,但没有给出我想要的输出。还要发布
ruleList
ntList
变量的完整声明。请更新问题,不要只是在评论中重复它们。@user3326306您的错误非常少,或者不是全部错误。编译器不会无缘无故地向您输出文本,错误文本具有意义!
for (std::vector<int>::const_iterator iter_rule_list = ruleList[0].begin(); iter_rule_list != ruleList[0].end(); ++iter_rule_list)
{
    int const value = *iter_rule_list;
    if (std::find(ntList.begin(), ntList.end(), value) == ntList.end())
    {
        // value missing in ntList
    }
}