std::vector
从C型数组初始化a的最便宜方法是什么?
示例:在下面的类中,我有一个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()
。有没有更好的方法?
11
问题的症结在于,向量无法知道是否使用了相同的分配器来创建C样式数组。因此,向量必须使用其自己的分配器分配内存。否则,它可以简单地换出基础数组并将其替换为您的数组。
—
Void