0

为什么在 C++ 入门中说我们不能向容器插入由迭代器表示的范围到(容器本身的)相同范围?

std::list<string> slist{"hi", "there!"};
slist.insert(slist.cbegin(), slist.cbegin(), slist.cend());

for(auto const& s : slist)
    std::cout << s << ' ';
std::cout << '\n';

输出:

hi there! hi there!
  • 该程序似乎工作正常,但在 C++ 入门第 5 版中。据说这是一个“运行时错误:表示要复制的范围的迭代器。迭代器不能引用与我们正在更改的容器相同的容器”。

  • 是否说这是一个错误,因为insert函数会使迭代器无效?如果是这样,那么为什么我的程序似乎工作正常?

4

0 回答 0