问题描述
- C++中顺序容器 erase,C++ Primer是否出错
-
C++ Primer中文第五版9.3.3的P312删除多个元素原文:
elem1=slist.erase(elem1,elem2); //调用后,elem1==elem2
迭代器elem1指向我们要删除的第一个元素,elem2指向我们要删除的最后一个元素之后的位置。这句话是不是错了。调用slist.erase(elem1,elem2)删除了slist从elem1到elem2(包含elem2)的元素,指向elem2后的元素。那么调用之后elem1怎么会等于elem2呢!
解决方案
也就是说调用后,elem1==elem2,即删除了 elem1 和 elem2 之间的元素。
如果你想知道书上说的是对,还是错,最好是自己上机编程来验证,而不是来这里提问。
编译器给出的答案,肯定是正确的。虽然说,不同编译器、对某些语句可能得到不同的答案,但这也是你学习的一部分,知道会比不会强一些。
解决方案二:
c++ primer 顺序容器
【C++ Primer】顺序容器
顺序容器(一)--《C++ primer》
解决方案三:
也就是说调用后,elem1==elem2,即删除了 elem1 和 elem2 之间的元素
时间: 2024-08-22 14:16:47