可能重复:
remove_if 等效于 std::map
昨天我写了一个程序,它使用 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;
我感到震惊。我用谷歌搜索了这一刻,发现这与标准并不矛盾。套装也是一样。
如果标准算法不起作用,这怎么能矛盾?我怎样才能更好地更换容器?