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

比较分别从容器中获得的迭代器是否有效?

  •  6
  • Thomson  · 技术社区  · 15 年前

    例如,这个表达式在语义上是否有效?

    container.begin() == container.begin();
    
    2 回复  |  直到 15 年前
        1
  •  11
  •   James McNellis    15 年前

    是的,只要两个迭代器都没有失效。

    std::deque<int> d;
    
    std::deque<int> begin1 = d.begin();
    d.push_front(42);                   // invalidates begin1!
    std::deque<int> begin2 = d.begin();
    assert(begin1 == begin2);           // wrong; you can't use begin1 anymore.
    
        2
  •  4
  •   In silico    15 年前

    对, begin() end() 也有这个属性)。例如, std::vector::push_back() 可能导致重新分配数组以容纳新元素。