我想定义一个包含一些整数的向量,并用函数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()
的值可能不同。是的,我确实需要一个指针。
答案 0 :(得分: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
这是最简单和最有效的。我留给你让它适应你的作业。