从数组(指针)分配向量

时间:2012-03-01 04:37:41

标签: c++ stl

是否有一种比for循环更好的标准方法?

如果我有一个数组类型supposedly,我可以这样做:

double d_array[] = { 1.0, 2.0, 3.0 };
std::vector<double> d_vector(d_array, d_array+3);

但是当我只有double *int表示其长度时,我不能这样做。

编辑:实际上,我认为我实际上可以做到这一点。但是,如果你的类型参数错误(这就是为什么它一开始对我不起作用的原因),错误消息非常少。

2 个答案:

答案 0 :(得分:2)

当然你也可以这样做

int length;
double *d;
//allocate memory and data to pointer
std::vector<double> d_vector(d, d+length);

答案 1 :(得分:1)

是的。你应该能够做到这一点。相关的构造函数是template <class InputIterator> vector ( InputIterator first, InputIterator last, const Allocator& = Allocator() ); - 指针也是迭代器(因为你可以对它们进行整数运算)。

话虽这么说,向量所做的一切都是迭代d_array的元素,所以不要指望性能明显优于for循环版本。