如何从C样式数组初始化std::vector?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

初始化std::vector从C型数组?

示例:在下面的类中,我有一个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()。有没有更好的方法?

提问于
用户回答回答于

您可以将指针视为迭代器:

w_.assign(w, w + len);
用户回答回答于

您使用的词初始化,所以不清楚这是一次分配或可能发生多次。

如果只需要一次初始化,可以将其放入构造函数中,并使用两个迭代器向量构造函数:

Foo::Foo(double* w, int len) : w_(w, w + len) { }

否则,按照先前的建议使用分配:

void set_data(double* w, int len)
{
    w_.assign(w, w + len);
}

扫码关注云+社区