Code Bye

stl源码的问题

下面的代码是vector的一部分源码
void pop_back() {
–_M_finish;
destroy(_M_finish);
}
这段代码本人看不清楚,这个功能是删除最后vector中的最后一个元素么?
解决方案

20

只是简单的将末尾的finish迭代器减1后destroy。
看看这篇:http://blog.csdn.net/tangle001/article/details/47026989

10

引用:

最后两个是相同的,是删除前一个还是最后一个?
原因是是先把指针前移一个位置再删除,为怎么感觉不是删除最后一个,而是最后一个的前一个呢?

_M_finish 可能是最后一个元素的后一个 …
===========================
这个得看你的 stl 的完整实现了 …


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明stl源码的问题