是否有任何一般偏好或规则来解释何时应使用容器特定版本的 begin 和 end 而不是自由函数std::begin
and std::end
?
据我了解,如果函数是模板,其中容器类型是模板参数,那么std::begin
and 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)
and std::end(cont)
或者应该容器的成员函数cont.begin()
and cont.end()
被优先考虑?
我是否正确地假设通过调用对性能没有任何好处?cont.end()
over std::end(cont)
?
自由函数版本比容器的成员函数更通用。我可能会在通用代码中使用它,其中容器的类型事先未知(并且可能是数组)。在代码的其余部分(即当容器固定且已知时)我可能会使用c.begin()
由于惯性。我希望关于 C++ 的新教科书会推荐自由函数版本(因为它永远不会更糟,有时甚至更好),但这必须赶上常见用法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)