C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 为什么此STL映射的条目未在GCC 4.5.1中初始化?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是代码摘录.
std::map<double,double> temp;

temp[0] = .1;

cout << temp[1] << endl;
// result varies based on compiler

我正在使用GCC版本4.4.1编译,我从temp [1]得到的值为0,正如我所期望的那样.我的同事正在编译GCC 4.5.1版.在调试模式下(使用-g标志),他获得1000.在编译释放模式(-O2标志)时,他得到0.

我的想法是,这是通常在未初始化的变量中出现的问题类型,除了地图应该基于this question和其他几个类似于它们的元素@L_262_2@认构造函数.

此外,Josuttis的C标准图书馆指出

为什么地图中的元素在调试模式下没有在GCC 4.5.1中初始化?我不理解其他人对此行为的正确评价吗?新元素的认构造是否不一定是标准的一部分?或者这可能是编译器中的实际错误

解决方法

它应该按你说的方式工作(打印0),实际上在g 4.5.2中它用-g,-O2或两者打印0.如果它没有打印0那么这几乎肯定是一个错误(或者你的同事的程序已经有未定义的行为,在这种情况下所有的赌注都是关闭的(TM)).

大佬总结

以上是大佬教程为你收集整理的c – 为什么此STL映射的条目未在GCC 4.5.1中初始化?全部内容,希望文章能够帮你解决c – 为什么此STL映射的条目未在GCC 4.5.1中初始化?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。