【发布时间】:2019-11-19 03:36:50
【问题描述】:
因为std::set 不会重复insert(),所以可以确保包含唯一元素。当使用重载erase(const key_type&) 时,它的对象将包含最多 1 个相同值的元素。因此,它可能返回 1(如果存在)或 0(否则)。
erase(const key_type&) 什么时候可以返回超过 1 个?
换句话说,返回size_type 而不是简单的bool 的目的是什么?
【问题讨论】:
-
erase-remove idiom 是一种常见的 C++ 技术,用于从 C++ 标准库容器中删除满足特定条件的元素。 “不是删除元素,而是删除运算符放置元素,不符合条件的,在给定范围的末尾,然后返回一个迭代器,该迭代器指向最后一个匹配元素之后的一个元素。然后擦除成员函数将元素从返回的迭代器中删除到给定的迭代器。"
标签: c++ language-lawyer return-type stdset erase-remove-idiom