从函数返回两个向量的交集

时间:2015-04-07 13:08:35

标签: c++ vector

有人可以帮助我吗,为什么我以后似乎无法获得交集在我后来在单独的函数中打印出生成的向量out_v?我不知道出了什么问题,我使用指向Array * operator +(Array * inp_v)下面的函数的指针传递向量,后者应该从set_intersection返回指向结果向量的指针。可能是因为我的set_intersection无法正常工作还是其他方面的影响? 我已经包含了所有stl标题neccesery。

Array* operator+ (Array* inp_v)
{

    XorArray *v1 = (XorArray *)inp_v;
    XorArray *out_v = new XorArray();
    vector<double>::iterator iVect1 = v1->vect.begin();
    vector<double>::iterator iVect2 = this->vect.begin();

    vector<double> Result;

    sort(iVect1, v1->vect.end());
    sort(iVect2, this->vect.end());

    vector<double>::iterator newEnd = set_intersection(iVect1,      v1>vect.end(), iVect2, this->vect.end(),Result.begin());

    while (newEnd != Result.end()
     {
        out_v->vect.push_back(*newEnd);
        ++newEnd;
    }                                           

    return out_v;
}

2 个答案:

答案 0 :(得分:1)

一个主要问题是result向量为空,这意味着result.begin() == result.end()。要在result向量中添加新项目,您需要使用std::back_inserter

我建议您查看std::set_intersection参考。

答案 1 :(得分:1)

使用back_inserter将内容推送到结果容器中。例如,请参阅http://en.cppreference.com/w/cpp/algorithm/set_intersection