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 之間的元素。
如果你想知道書上說的是對,還是錯,最好是自己上機編程來驗證,而不是來這裡提問。
編譯器給出的答案,肯定是正確的。雖然說,不同編譯器、對某些語句可能得到不同的答案,但這也是你學習的一部分,知道會比不會強一些。