是否有一种比for
循环更好的标准方法?
如果我有一个数组类型supposedly,我可以这样做:
double d_array[] = { 1.0, 2.0, 3.0 };
std::vector<double> d_vector(d_array, d_array+3);
但是当我只有double *
和int
表示其长度时,我不能这样做。
编辑:实际上,我认为我实际上可以做到这一点。但是,如果你的类型参数错误(这就是为什么它一开始对我不起作用的原因),错误消息非常少。
答案 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
循环版本。