使用vector迭代器时出现运行时错误

Runtime error when using vector iterator

本文关键字:运行时错误 vector 迭代器 使用      更新时间:2023-10-16

我有一个问题与以下代码:

for(int j = 0; j < ensembleTemp.size(); j++)
        {
            ensemble[ensembleTemp[j]].clear();
            ensemble[ensembleTemp[j]].insert(ensemble[j].begin(),
                                     ensembleTemp.begin(), ensembleTemp.end());
        }   

ensembleTemp是一个vector<int>合奏是vector<vector<int>>。我有以下内容

错误:vector插入迭代器超出范围。

我错在哪里?

您为insert的第一个参数使用了错误的索引,它(大概)应该是

for(int j = 0; j < ensembleTemp.size(); j++)
{
    ensemble[ensembleTemp[j]].clear();
    ensemble[ensembleTemp[j]].insert(
        ensemble[ensembleTemp[j]].begin(), 
        ensembleTemp.begin(), 
        ensembleTemp.end());
}

插入的第一个形参应该是要插入的vector对象的迭代器。

另外,对于所有j.

, ensemble.size()必须大于ensembleTemp[j]。

您确定ensemble.size()大于'j'吗?且大于ensembleTemp[j]?