【问题标题】:trying to insert object at certain index in list (c++)试图在列表中的某个索引处插入对象(C++)
【发布时间】:2020-08-26 02:07:44
【问题描述】:

我正在尝试在某个索引处的对象列表中插入一个对象,但我的迭代器似乎不想添加到 int 中。这是我的代码:

list<Node> nodes;
. . .
// filling list 
. . . 
void DiffLine::addNodeAt(int i, Node node) {
std::list<Node>::iterator it;
it = nodes.begin() + i;
nodes.insert(it, node);
}

这是我收到的错误消息

Error (active) E0349 no operator "+" 匹配这些操作数

我做错了什么?

【问题讨论】:

    标签: c++ list object iterator


    【解决方案1】:

    std::list 不是随机访问的,因此它的迭代器不是随机推进的故意std::advance() 在标题 &lt;iterator&gt; 中有 std::advance() 如果你真的想推进它,只需准备等待线性时间。并考虑使用std::vector

    【讨论】:

    • 请注意,如果advance 前进超过容器的末尾,则未定义行为。调用前请确定i 有效。
    猜你喜欢
    • 2023-03-21
    • 2011-04-04
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 2018-09-22
    • 1970-01-01
    • 2021-03-28
    • 2022-11-11
    相关资源
    最近更新 更多