代码之家  ›  专栏  ›  技术社区  ›  Jookia

列表迭代器+运算符

  •  7
  • Jookia  · 技术社区  · 15 年前
    // ((++currentEntry)--) is equivalent to (currentEntry + 1). Kind of.
    menuEntries.insert((++currentEntry)--, newEntries.begin(), newEntries.end());
    

    当使用“+1”时,我得到:

    source/menu.cpp:146:37: error: invalid operands to binary expression
          ('list<menuEntry *>::iterator' (aka '_List_iterator<menuEntry *>') and
          'int')
                                menuEntries.insert(currentEntry + 1, ...
                                                   ~~~~~~~~~~~~ ^ ~
    
    5 回复  |  直到 15 年前
        1
  •  8
  •   winwaed    15 年前

    为什么不分成几行:

    iterator nextEntry = currentEntry;
    menuEntries.insert( ++nextEntry, newEntries.begin(), newEntries.end());
    

    哪里 iterator 是列表的迭代器类型。就我个人而言,我可能会 ++nextEntry 为了进一步明确起见,这可能是一个主观的决定。

        2
  •  4
  •   Éric Malenfant    15 年前

    助手函数如何:

    template<class IterT>
    IterT Next(IterT i)
    {
      return ++i;
    }
    

    (++currentEntry)-- 通过 Next(currentEntry)

    编辑: next and prior in the Utility library

        3
  •  0
  •   Armen Tsirunyan    15 年前
    ++currentEntry;
    menuEntries.insert(currentEntry, newEntries.begin(), newEntries.end());
    --currentEntry;
    

    menuEntries.insert(++currentEntry, newEntries.begin(), newEntries.end());
    --currentEntry;
    
        4
  •  0
  •   James    15 年前

    myList.insert(myList.rbegin(), newEntries.begin(), newEntries.end())
    

    会将新项目添加到结尾。

        5
  •  0
  •   robev    15 年前

    因为您不想影响currentEntry迭代器,并且希望在currentEntry之后插入成员,所以currentEntry+1是最好的选择。