找出矢量矢量的元素是否存在于另一个矢量中

时间:2014-02-21 20:31:31

标签: 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]) != ruleList[0][j].end())
        {   
            ;
        }
        else
        {
            errorList.push_back(ERROR1);
            error = true;
        }
    }
}

我收到了错误,但我不确定为什么。

error C2678: binary '==' : no operator found which takes a left-hand operand of type 'char' (or there is no acceptable conversion).

任何帮助将不胜感激。向量声明:

vector<string> ntList;
vector< vector<string> > ruleList(100, vector<string> (0, "0"));

1 个答案:

答案 0 :(得分:0)

根据您想要实现的目标,std::equal或(仅限C ++ 11)std::is_permutation可能就足够了。如果您只是想检查向量是否存储了完全相同的值并且具有相同的大小,那么这些算法就足够了。

如果你想做更多,例如将丢失的值存储在其他地方,然后用手写循环可能会更好。假设您在两种情况下都在处理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
    }
}