高效地从 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中文网其他相关文章!