最佳答案
是否有任何一般的首选项或规则来解释什么时候应该使用容器特定版本的 start 和 end 来代替自由函数 std::begin
和 std::end
?
我的理解是,如果函数是一个模板,其中容器类型是一个模板参数,那么应该使用 std::begin
和 std::end
,即:
template<class T> void do_stuff( const T& t )
{
std::for_each( std::begin(t), std::end(t), /* some stuff */ );
}
在其他场景中,例如已知容器类型的标准/成员函数中,情况如何?使用 std::begin(cont)
和 std::end(cont)
仍然是更好的做法吗? 还是应该首选容器的成员函数 cont.begin()
和 cont.end()
?
我假设通过调用 cont.end()
而不是 std::end(cont)
对性能没有任何好处,这种假设是正确的吗?