【发布时间】:2010-09-23 05:53:21
【问题描述】:
昨天我写了一个程序,它使用 multiset 来存储这样的元素:
std::multiset < boost::shared_ptr < CEntity > > m_Entities;
然后我尝试像这样使用标准算法remove_if:
std::remove_if(m_Entities.begin, m_Entities.end(), MarkedForDestroy);
但是编译失败,因为如果我们在 GCC 4.4 中看到 set 和 multiset 的实现,我们会看到:
typedef typename _Rep_type::const_iterator iterator;
typedef typename _Rep_type::const_iterator const_iterator;
我很震惊。我用谷歌搜索了这一刻,发现这与标准并不矛盾。 set 也是一样。
如果标准算法不起作用,这怎么能矛盾?如何更好地更换容器?
【问题讨论】: