gpt4 book ai didi

c++ - 何时使用 std::begin 和 std::end 而不是容器特定版本

转载 作者:IT老高 更新时间:2023-10-28 11:59:04 29 4
gpt4 key购买 nike

是否有任何一般偏好或规则来解释何时应使用容器特定版本的 begin 和 end 来代替自由函数 std::beginstd::end ?

我的理解是,如果函数是一个模板,而容器类型是一个模板参数,那么应该使用 std::beginstd::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) 对性能没有好处?

最佳答案

自由函数版本比容器的成员函数更通用。我可能会在通用代码中使用它,其中容器的类型事先不知道(并且可能是一个数组)。在其余代码中(即当容器固定且已知时),由于惯性,我可能会使用 c.begin() 。我希望有关 C++ 的新教科书会推荐免费函数版本(因为它永远不会更糟,有时会更好),但这必须 catch 常见用法。

关于c++ - 何时使用 std::begin 和 std::end 而不是容器特定版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8452130/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com