【发布时间】:2011-01-26 21:53:27
【问题描述】:
从 C 样式数组初始化 std::vector 最便宜的方法是什么?
示例:在下面的类中,我有一个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()。有没有更好的方法?
【问题讨论】:
-
问题的症结在于,向量无法知道是否使用相同的分配器来创建您的 C 样式数组。因此,向量必须使用自己的分配器分配内存。否则它可以简单地换出底层数组并将其替换为您的数组。