从C风格的数组初始化std::vector
最便宜的方法是什么?
示例:在下面的类中,我有一个vector
,但由于外部限制,数据将作为C样式的数组传入:
class Foo {
std::vector<double> w_;
public:
void set_data(double* w, int len){
// how to cheaply initialize the std::vector?
}
显然,我可以调用w_.resize()
,然后循环遍历元素,或者调用std::copy()
。有没有更好的方法?
发布于 2010-03-13 00:38:37
不要忘记,您可以将指针视为迭代器:
w_.assign(w, w + len);
发布于 2010-03-13 01:03:49
您使用了初始化这个词,所以不清楚这是一次性赋值还是可以多次赋值。
如果你只需要一次初始化,你可以把它放在构造函数中,并使用两个迭代器向量构造函数:
Foo::Foo(double* w, int len) : w_(w, w + len) { }
否则,按照前面的建议使用assign:
void set_data(double* w, int len)
{
w_.assign(w, w + len);
}
https://stackoverflow.com/questions/2434196
复制相似问题