如何修复c ++中的错误"vector iterators in range are from different containers"?

How to fix error "vector iterators in range are from different containers" in c++?

本文关键字:range in are from containers different iterators vector 何修复 错误      更新时间:2023-10-16
我不知道

问题出在哪里。程序在此函数中崩溃。你可以帮我吗?

我使用这两个函数进行基准测试(将容器速度与不同的使用技术进行比较(。我使用矢量"studentai",其中包含所有学生的姓名和姓氏。在矢量"silpni"是学生,最终得分为>5。当然,还有得分为 <5 的"geri"。此函数运行良好:

void atrinkimas_1(vector <duomenys>& studentai, vector <duomenys>& silpni, vector <duomenys>& geri)
{
    sort(studentai.begin(), studentai.end(), tikrinimas_gal);
    std::vector<duomenys>::iterator it = std::find_if(studentai.begin(), 
    studentai.end(), tikrinimas_5);
    std::copy(it, studentai.end(), std::back_inserter(geri));
    studentai.resize(studentai.size() - geri.size());
    std: copy(studentai.begin(), it, std::back_inserter(silpni));
    studentai.clear();
}

这不会:

void atrinkimas_2(vector <duomenys>& studentai, vector<duomenys> &silpni)
{
    sort(studentai.begin(), studentai.end(), tikrinimas_gal);
    std::vector<duomenys>::iterator it = std::find_if(studentai.begin(), studentai.end(), tikrinimas_5);
    std::copy(it, studentai.end(), std::back_inserter(silpni));
    studentai.resize(studentai.size() - silpni.size());
}

问题出在哪里?

通过调整studentai的大小,您已经使it无效。我猜错误在于it不再指向studentai