
我知道resize将值设置为fillValue(总是0?).所以这将是无意义的初始化(希望每次少于mb)每秒60次.是否有办法在调整大小时禁用启动?
解决方法 基本上没有.向量中的元素是在调整大小时默认构造的(对于整数,这导致0).假设你使用reserve()来确保resize()不分配内存,我不会担心这个,除非事后证明它是一个性能问题.
如果您担心,您可能希望考虑使用常规数组并将项目计数存储在单独的变量中.这将为您提供最佳性能.
更新:
约翰问:
Is the constructor really guaranteed
to zero that memory? I thought that
was undefined?
是的,不是.基本类型(int,bool,float等)确实有默认的构造函数,将它们初始化为零.但是,与常规类或结构不同,编译器不会自动调用它们.
例如
int a; // uninitializedint b = int(); // initialized to 0
因为vector :: resize在添加项目时使用后一种形式,所以可以保证创建的元素将被正确初始化为零.对于隐式创建元素的所有STL集合都是如此.
总结以上是内存溢出为你收集整理的在调整大小时禁用向量填充值? C全部内容,希望文章能够帮你解决在调整大小时禁用向量填充值? C所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)