我想使用一种特殊的方法来初始化一个std::vector<unsigned int>
,这在我参考的一本C++书籍(德国作者Ulrich Breymann的《C++程序员》)中有所描述。该书有一节介绍STL的序列类型,特别是list
、vector
和deque
。在这一节中,作者写道,这些序列类型有两个特殊的构造函数,即,如果X
指代这样一种类型,
X(n, t) // creates a sequence with n copies of t
X(i, j) // creates a sequence from the elements of the interval [i, j)
我希望用第二种方法来表示一个无符号整数的区间,即
std::vector<unsigned int> l(1U, 10U);
我希望得到一个以{1,2,...,9}
初始化的列表。但是我实际得到的是一个只有一个值为10的unsigned int
向量 :-| 是否存在第二种变体,如果存在,如何强制调用它?
partial_sum(v.begin(), v.end(), v.begin())
,当n = 5时,您将得到{1, 3, 6, 10, 15}。 - lifebalancegenerate
使用静态变量。将其放入函数中,多次调用它将会保持计数。请使用ValueType i = {1}; std::generate(first, last, [&i] { return i++; });
代替。 - Anne van Rossum