从 C 样式数组高效初始化 std::vector
使用遗留代码或外部依赖项时,您可能会遇到以下情况数据以 C 样式数组的形式提供。将此数据集成到 std::vector 等现代 C 结构中需要仔细考虑效率。
在提供的代码片段中,Foo 类拥有一个名为 w_ 的 std::vector。要使用 C 样式数组(w 长度为 len)提供的数据填充此向量,您需要一种经济高效的方法。
避免过度调整大小和复制
虽然您可以将 w_ 的大小调整为 len 并手动填充它,但这种方法涉及不必要的大小调整和逐元素复制。类似地,使用 std::copy() 会引入额外的复制操作。
利用指针算术
更有效的解决方案是利用指针算术。由于指针可以被视为迭代器,因此您可以直接使用范围 [w, w len) 来初始化 w_:
w_.assign(w, w + len);
此语法通过将 C 样式数组 w 中的一系列元素分配给来初始化 w_它的结束。 std::vector 类负责分配必要的内存并有效地复制元素。
通过使用此方法,您可以避免显式调整大小和单独复制操作的开销,从而获得更高效、更简洁的方法.
以上是如何有效地从 C 风格数组初始化 `std::vector`?的详细内容。更多信息请关注PHP中文网其他相关文章!