gpt4 book ai didi

c++ - 我在这里支付违约 build 费用吗?如果支付的话,我可以避免吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:11:39 27 4
gpt4 key购买 nike

在构建 T 成本高昂的情况下,我想知道在以下情况下我是否为默认构建付费(我想我会付费)

std::function< T() > make_t;
std::vector< T > t( 100000 );
std::generate( t.begin(), t.end(), make_T );

如果我必须为此付费,我可以避免吗?我想写一些类似的东西

std::function< T() > make_t;
std::vector< T > t;
t.reserve( 100000 );
std::generate( t.begin(), t.end(), make_T );

但这不起作用,因为它不会将 t.end() 移动到保留内容的末尾。以下是否安全/可取/正确?

std::function< T() > make_t;
std::vector< T > t;
t.reserve( 100000 );
std::generate( t.begin(), t.begin() + 100000, make_T );

我还认为我可以使用 back_inserter,但该接口(interface)适合我所拥有的(我有一个函数,每次访问它时都会生成一个新的 T 对象,而不是一对范围的迭代器)。

C++0x 解决方案优于 C++03 解决方案(即,如果有更好的方法,则利用新标准的解决方案)优于需要使用 boost 的解决方案。

最佳答案

std::function< T() > make_t;
std::vector< T > t;
int const count = 100000;
t.reserve( count );
std::generate_n( std::back_inserter(t), count, make_T );

std::back_inserter<iterator> .

关于c++ - 我在这里支付违约 build 费用吗?如果支付的话,我可以避免吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6590426/

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