C++ 为什么`std::set::erase(const key_type&)`result`size_type`而不是`bool`?

C++ 为什么`std::set::erase(const key_type&)`result`size_type`而不是`bool`?,c++,language-lawyer,return-type,stdset,erase-remove-idiom,C++,Language Lawyer,Return Type,Stdset,Erase Remove Idiom,因为std::set不插入重复项,所以可以确保它包含唯一的元素。使用重载橡皮擦常量key_type&时,其对象最多包含1个相同值的元素。因此,如果存在,它可能返回1,否则返回0 何时可以擦除常数键\u type&可能返回超过1? 换句话说,返回大小类型而不是简单bool的目的是什么?返回大小类型的目的是一致性;所有关联容器都有一个擦除方法,该方法采用键类型并返回大小。即使大小只有0或1,仍然是相同的接口。3。擦除删除习惯用法是一种常见的C++技术,用于从C++标准库容器中消除满足某一标准的元素。

因为std::set不插入重复项,所以可以确保它包含唯一的元素。使用重载橡皮擦常量key_type&时,其对象最多包含1个相同值的元素。因此,如果存在,它可能返回1,否则返回0

何时可以擦除常数键\u type&可能返回超过1?
换句话说,返回大小类型而不是简单bool的目的是什么?

返回大小类型的目的是一致性;所有关联容器都有一个擦除方法,该方法采用键类型并返回大小。即使大小只有0或1,仍然是相同的接口。

3。擦除删除习惯用法是一种常见的C++技术,用于从C++标准库容器中消除满足某一标准的元素。remove运算符不删除元素,而是将与条件不匹配的元素放在给定范围的末尾,然后返回一个迭代器,将一个元素指向最后一个匹配的元素。然后,erase成员函数将返回的迭代器中的元素删除到给定的迭代器中。事先知道这个原因,但忘记在我的Qn中提及,以排除这个可能性。基本上我想知道除此之外的其他意图。