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

时间:2011-09-22 08:26:47

标签: c++ vector iterator runtime-error

我遇到以下代码问题:

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>>。我有以下内容,

  

错误:向量插入迭代器到范围外。

我的错误是什么?

2 个答案:

答案 0 :(得分:3)

你对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());
}

要插入的第一个参数应该是插入的向量的迭代器。

此外,对于所有j,ensemble.size()必须大于ensembleTemp [j]。

答案 1 :(得分:0)

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