Dmi*_*riy 23 c++ arrays stl vector stdvector
目前我做以下事情:
// float *c_array = new float[1024];
void Foo::foo(float *c_array, size_t c_array_size) {
//std::vector<float> cpp_array;
cpp_array.assign(c_array, c_array + c_array_size);
delete [] c_array;
}
Run Code Online (Sandbox Code Playgroud)
如何优化此分配?我不想执行元素复制,只是交换指针.
Mar*_*k B 21
当前std::vector
不提供任何能力或接口来获取先前分配的存储的所有权.据推测,通过意外传递堆栈地址太容易了,允许比解决的问题更多的问题.
如果你想避免复制到向量中,你需要在整个调用链中使用向量,或者float[]
在整个时间内以C方式进行.你不能混合它们.你可以保证&vec[0]
它将等同于C阵列,但完全连续,因此在整个程序中使用向量可能是可行的.