由于现在c ++标准库(如std::begin()
和std::end()
)上存在泛型迭代器,我想知道为什么没有std::clear()
方法来清除容器?
答案 0 :(得分:12)
关于std::begin/end
的好处是可以为数组实现它。但是,它只能作为数组的命名空间作用域函数实现。因此,在通用代码中,拥有std::begin/end
是很好的,这样通用代码就无需在需要begin/end
时决定是否需要使用命名空间作用域或成员函数。
但我知道std::clear
没有这样的比喻。它只能用于具有成员clear()
的容器。如何在通用代码中使用它是没有两难的(至少不是我能想到的)。