1

我想用一些整数定义一个向量,并用函数的结果填充它get_a_value()。可以通过这种方式通过循环来完成:

auto v = new std::vector<int>( 7 );
for ( int i = 0; i < 7; i++ )
    v->at(i) = get_a_value();

但是有一些冗余让我不舒服。这可以通过向量初始化中的一些 lambda 魔法来解决吗?

auto v = new std::vector<int>( 7, /* something involving get_a_value() here */ );

的值get_a_value()在每次调用中可能不同。是的,我确实需要一个指针。

4

1 回答 1

2

一般来说,你想要这个:

std::vector<T> v;
v.reserve(n); // reserve space only, no need to fill with default-constructed T's

std::generate_n(std::back_inserter(v), n, get_a_T_value); // fill with n values

这是最简单和最有效的。我把它留给你,让它适应你的家庭作业。

于 2012-06-13T22:10:51.353 回答