首页 > 后端开发 > C++ > 如何从 C 风格数组高效地初始化 `std::vector`?

如何从 C 风格数组高效地初始化 `std::vector`?

Patricia Arquette
发布: 2024-11-09 14:22:02
原创
471 人浏览过

How to Efficiently Initialize a `std::vector` from a C-style Array?

高效地从 C 风格数组分配 std::vector

当遇到从 C 风格数组初始化 std::vector 的任务时C风格的数组,兼顾效率和方便性至关重要。当外部约束要求以 C 样式数组格式提供数据时,就会出现这种情况,如以下类示例所示:

class Foo {
  std::vector<double> w_;
public:
  void set_data(double* w, int len){
   // how to cheaply initialize the std::vector?
}
登录后复制

为了有效地初始化 std::vector,我们可以利用以下事实: C 风格的数组指针也可以被视为迭代器。这使我们能够避免创建中间容器或循环遍历各个元素:

优雅而高效的解决方案:

w_.assign(w, w + len);
登录后复制

这里,w是指向第一个元素的指针C 风格数组中的元素,w len 指向数组的末尾。使用带有迭代器的分配函数会自动从数组元素构造向量元素。这种方法不仅高效而且简洁优雅。

以上是如何从 C 风格数组高效地初始化 `std::vector`?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板