首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从C风格的数组中初始化std::vector?

如何从C风格的数组中初始化std::vector?
EN

Stack Overflow用户
提问于 2010-03-13 00:37:09
回答 2查看 149.9K关注 0票数 200

从C风格的数组初始化std::vector最便宜的方法是什么?

示例:在下面的类中,我有一个vector,但由于外部限制,数据将作为C样式的数组传入:

代码语言:javascript
复制
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()。有没有更好的方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-13 00:38:37

不要忘记,您可以将指针视为迭代器:

代码语言:javascript
复制
w_.assign(w, w + len);
票数 273
EN

Stack Overflow用户

发布于 2010-03-13 01:03:49

您使用了初始化这个词,所以不清楚这是一次性赋值还是可以多次赋值。

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

代码语言:javascript
复制
Foo::Foo(double* w, int len) : w_(w, w + len) { }

否则,按照前面的建议使用assign:

代码语言:javascript
复制
void set_data(double* w, int len)
{
    w_.assign(w, w + len);
}
票数 46
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2434196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档