它们之间的区别是什么
float* x = new float[SIZE];和
vector<float> x(SIZE);虽然这两个函数都占用内存中的整数大小空间,并且使用向量可以使用有用的辅助函数,但如果我不需要使用向量函数怎么办?从性能和内存的角度来看,使用float*或shared_ptr<float>而不是vector<float>会更好!?
发布于 2014-05-20 15:17:48
当vector< float >超出作用域时,它的内存会自动释放。
当float*超出作用域时,你最好将指针存储在某个地方,否则你会有内存泄漏。
请参阅RAII
发布于 2014-05-20 15:19:58
vector<float> x(SIZE);这是一个浮点数列表,其中的元素可以在创建后追加或删除。它还可以自动执行内存管理
float* x = new float[SIZE];这是一个C级手动分配的固定大小的数组。C++的等价物是
std::array<float, SIZE> x;如果您不需要动态数组,std::array通常可以满足您的需要。(但是请注意,std::array是C++11的东西,不受旧版编译器的支持。)
发布于 2014-05-20 15:17:58
vector提供了增长和收缩的可能性,而阵列则不是这样。此外,可以使用成员函数读取vector的大小,这对于数组来说是不可能的。
https://stackoverflow.com/questions/23753187
复制相似问题