C++ 如何寻址循环中的下一个迭代器并在同一地址插入元素?

C++ 如何寻址循环中的下一个迭代器并在同一地址插入元素?,c++,list,c++11,insert,iterator,C++,List,C++11,Insert,Iterator,1) 尝试使用next()访问内部循环的下一个迭代器时出错。我想知道这个错误是从哪里来的。具体来说,我有一个列表向量,我想检查与下一个元素的连接可行性,这就是feas[it2][(next(it2))]所做的 2) 在if条件满足后,我想在同一地址插入一个元素,比如说3。如果您能修改插入函数,我将不胜感激 总之,我想知道如何访问列表中的下一个元素?以及如何在同一地址插入值 非常感谢 vector<list<int>>temp; for (const auto& i

1) 尝试使用next()访问内部循环的下一个迭代器时出错。我想知道这个错误是从哪里来的。具体来说,我有一个列表向量,我想检查与下一个元素的连接可行性,这就是feas[it2][(next(it2))]所做的

2) 在if条件满足后,我想在同一地址插入一个元素,比如说3。如果您能修改插入函数,我将不胜感激

总之,我想知道如何访问列表中的下一个元素?以及如何在同一地址插入值

非常感谢

vector<list<int>>temp;
for (const auto& it1 : temp)
{

    for (const auto& it2 : it1)
    {

        if (feas[it2][(next(it2))] == 1)
        {
            temp[it1].insert (it2,3);
        }

    }
}
vectortemp;
用于(常数自动和it1:温度)
{
用于(常数自动和it2:it1)
{
if(feas[it2][(next(it2))]==1)
{
温度[it1]。插入(it2,3);
}
}
}

您将永远无法插入到正在迭代的
向量中

编辑:您可以在迭代“向量”时插入和删除该向量中的元素,如果该向量本身未调整大小

唯一的选择是使用索引在
向量上移动

例如:

vector<list<int>>temp;
for (int i = 0; i < temp.size; i++)
{

    for (int j = 0; j < temp[i].size; j++)
    {

        if (feas[i][j + 1)] == 1)
        {
            temp[i].insert(temp.begin()+j, 3);
        }

    }
}
vectortemp;
对于(int i=0;i
如果使用上一个元素进行检查对您有效:

int temp = -1;
for (const auto& it2 : it1)
{
    if (feas[temp][itr2] == 1)
    {
        temp[it1].insert (temp,3);
    }
    temp = it2;
}

您可能想尝试类似的方法,因为itr2保存列表中的值。it2不是迭代器。您能帮我更正这个问题吗!我已经解决了这个问题,但我正在寻找一种优雅的方式来完成上述操作。我想知道开发代码最有效的方法是什么。谢谢你的回复。插入部分应编辑为“temp[i]。插入(temp.begin()+j,3);”,但它仍然不起作用。重点是我已经有过向量向量的例子,但同样的方法似乎不适合列表向量。@我只是出于好奇,你为什么要使用
向量
而不是
向量
?我切换到“向量”是因为在主循环中的计算时间较少。我在早期阶段提出了这个问题,因为我担心主回路的效率。只是想知道如果我使用lambdas进行上述操作是否会更好。期待听到这方面的任何想法。谢谢