您可以使用带有两个迭代器的向量构造函数。例如,您可以使用来自vector<double>
.
std::vector<double> init(10, 3.14);
std::vector<Item> vv(init.begin(), init.end());
现场演示。
或者您可以编写自己的自定义迭代器类来进行初始化:
struct ItemInitializer {
int index;
double value;
using value_type = double;
using difference_type = int;
using pointer = const double*;
using reference = const double&;
using iterator_category = std::forward_iterator_tag;
ItemInitializer() : index(0), value(0.0) {}
ItemInitializer(int index, double v = 0.0) : index(index), value(v) {}
bool operator!=(const ItemInitializer& other) const { return other.index != index; }
ItemInitializer& operator++() { index++; return *this; }
ItemInitializer operator++(int) { ItemInitializer ret(index, value); index++; return ret; }
const double& operator*() const { return value; }
const double* operator->() const { return &value; }
};
std::vector<Item> vv(ItemInitializer{0, 3.14}, ItemInitializer{10});
现场演示。