zoukankan      html  css  js  c++  java
  • Iterator invalidation(迭代器失效)

    一.vector

    所有读操作、swap、std::swap:都不会引起迭代器失效...

    clear、operator=、assign:都会引起全部变量迭代器失效

    reserve、shrink_to_fit:如果capacity的大小被改变了,则引起全部变量迭代器失效

    erase:被删除的变量以及其后面的变量包括end()都迭代器失效

    push_back、emplace_back:假如capacity的大小被改变,则引起全部变量迭代器失效。否则只是end()迭代器失效

    insert、emplace、resize:假如capacity的大小被改变,则引起全部变量迭代器失效。否则只是在插入位置后面的变量迭代器失效

    pop_back:被删除的变量以及end()迭代器失效

    二.deque(没有发生删除且只插入在末尾,指针和引用不失效)

    All read only operations Never
    swapstd::swap The past-the-end iterator may be invalidated (implementation defined)
    shrink_to_fitclearinsertemplacepush_frontpush_backemplace_frontemplace_back Always
    erase If erasing at begin - only erased elements

    If erasing at end - only erased elements and the past-the-end iterator
    Otherwise - all iterators are invalidated (including the past-the-end iterator).

    resize If the new size is smaller than the old one : only erased elements and the past-the-end iterator

    If the new size is bigger than the old one : all iterators are invalidated
    Otherwise - none iterators are invalidated.

    pop_front Only to the element erased
    pop_back Only to the element erased and the past-the-end iterator

    Invalidation notes

      • When inserting at either end of the deque, references are not invalidated by insert and emplace.
      • push_frontpush_backemplace_front and emplace_back do not invalidate any references to elements of the deque.
      • When erasing at either end of the deque, references to non-erased elements are not invalidated by erasepop_front and pop_back.
      • A call to resize with a smaller size does not invalidate any references to non-erased elements.
      • A call to resize with a bigger size does not invalidate any references to elements of the deque.
  • 相关阅读:
    Mac系统下安装和卸载HomeBrew的方法
    .NET笔试题集(五)
    .NET笔试题集(四)
    .NET笔试题集(二)
    .NET笔试题集(三)
    .NET笔试题集(一)
    C# 文件操作方法
    MD5 加密的两种方法
    jquery 元素选择器集合
    Jquery元素追加和删除
  • 原文地址:https://www.cnblogs.com/Call-C/p/6979148.html
Copyright © 2011-2022 走看看