当前位置:  开发笔记 > 编程语言 > 正文

在调整大小时禁用向量填充值?C++

如何解决《在调整大小时禁用向量填充值?C++》经验,为你挑选了1个好方法。

我的情况是我必须使用ac样式函数返回复制的len.我决定我应该调整大小,然后调整大小返回扩展的向量作为内存传递的向量

我知道resize将值设置为fillValue(总是0?).所以这将是无意义的初始化(希望每次少于mb)每秒60次.是否有办法在调整大小时禁用启动?



1> Andrew Grant..:

基本上没有.向量中的元素是在调整大小时默认构造的(对于整数,这导致0).

假设您使用reserve()来确保resize()不分配内存,我不会担心这个,除非它后来被证明是性能问题.

如果您担心,您可能希望考虑使用常规数组并将项目计数存储在单独的变量中.这将为您提供最佳性能.

更新:

约翰问:

构造函数真的保证将内存归零吗?我以为那是未定义的?

是的,不是.原始类型(int,bool,float等)确实有默认的构造函数,将它们初始化为零.但是,与常规类或结构不同,编译器不会自动调用它们.

例如

int a;         // uninitialized
int b = int(); // initialized to 0

因为vector :: resize在添加项目时使用后一种形式,所以保证创建的元素将被正确初始化为零.对于隐式创建元素的所有STL集合都是如此.

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有