我正在使用c++实现一个容器,实际上是一个数组的包装器。我不确定如何从initializer_list中实现构造函数。我最终得到了这个实现,但它对我来说似乎非常丑陋。因此,是否可以分配在堆上并由initializer_list初始化的数组。或者有没有更优雅的方法来做到这一点?
template <typename T> class sequence {
public:
sequence (size_t n): _data {new T[n]}, _size {n} {};
sequence (std::initializer_list<T> source);
~sequence() { delete[] _data; };
private:
pointer _data;
size_type _size;
};
//Initializer list constructor
template <class T> sequence<T>::sequence (std::initializer_list<T> source)
: sequence(source.size()) {
auto iterator = source.begin();
for ( int i=0; i < _size; i++) {
_data[i] = *iterator;
++iterator;
}
};