【发布时间】:2012-02-18 01:02:44
【问题描述】:
我正在尝试使用以下方法擦除多重集的最后一个元素:
minheap.erase(minheap.rbegin());
它不编译,并给出 4-5 个错误。
请注意,在 C++ 多重集中,.end() 指向最后一个元素的旁边,而不是最后一个元素。
有什么想法吗?
编辑:
为什么提供不同的数字?
multiset <int>::reverse_iterator it1 = minheap.rbegin();
m1=*(++it1);
multiset <int>::iterator it2 = minheap.end();
m2=*(--it2);
在 multiset 中添加了一些数据 `m1 is 1` 和 `m2 is 2` 。为什么那些不一样?
【问题讨论】:
-
关于您的编辑:您不需要
++it1,rbegin已经指向最后一个元素。 -
哦,你是对的,对不起,我来晚了:D