为什么c ++ 11标准库中没有std :: clear

时间:2013-11-25 22:18:36

标签: c++ c++11 iterator containers std

由于现在c ++标准库(如std::begin()std::end())上存在泛型迭代器,我想知道为什么没有std::clear()方法来清除容器?

1 个答案:

答案 0 :(得分:12)

关于std::begin/end的好处是可以为数组实现它。但是,它只能作为数组的命名空间作用域函数实现。因此,在通用代码中,拥有std::begin/end是很好的,这样通用代码就无需在需要begin/end时决定是否需要使用命名空间作用域或成员函数。

但我知道std::clear没有这样的比喻。它只能用于具有成员clear()的容器。如何在通用代码中使用它是没有两难的(至少不是我能想到的)。