首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >float*和vector<float>之间的区别

float*和vector<float>之间的区别
EN

Stack Overflow用户
提问于 2014-05-20 15:12:53
回答 7查看 2.1K关注 0票数 0

它们之间的区别是什么

代码语言:javascript
复制
    float* x = new float[SIZE];

代码语言:javascript
复制
    vector<float> x(SIZE);

虽然这两个函数都占用内存中的整数大小空间,并且使用向量可以使用有用的辅助函数,但如果我不需要使用向量函数怎么办?从性能和内存的角度来看,使用float*shared_ptr<float>而不是vector<float>会更好!?

EN

回答 7

Stack Overflow用户

发布于 2014-05-20 15:17:48

当vector< float >超出作用域时,它的内存会自动释放。

当float*超出作用域时,你最好将指针存储在某个地方,否则你会有内存泄漏。

请参阅RAII

票数 2
EN

Stack Overflow用户

发布于 2014-05-20 15:19:58

代码语言:javascript
复制
vector<float> x(SIZE);

这是一个浮点数列表,其中的元素可以在创建后追加或删除。它还可以自动执行内存管理

代码语言:javascript
复制
float* x = new float[SIZE];

这是一个C级手动分配的固定大小的数组。C++的等价物是

代码语言:javascript
复制
std::array<float, SIZE> x;

如果您不需要动态数组,std::array通常可以满足您的需要。(但是请注意,std::array是C++11的东西,不受旧版编译器的支持。)

票数 1
EN

Stack Overflow用户

发布于 2014-05-20 15:17:58

vector提供了增长和收缩的可能性,而阵列则不是这样。此外,可以使用成员函数读取vector的大小,这对于数组来说是不可能的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23753187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档