求助: poj上提交代码的c++指的什么是什么编译器? 和g++有什么不同啊?

为什么同一个代码用c++编译器的话内存只占g++编译器的一半, 但是g++的速度快!这是为什么?

G++是一个GNU编译器,而C++是微软VC++的编译器。这两种编译器对不同的地方有优化,因此速度谁快谁慢不一定吧。有些题目使用C++提交相同的代码运行时间只有G++的八分之一,很是让人费解(可能是POJ是windows为基础的原因吧)。G++中对栈内存有优化,允许定义这样的数组:
int a[n]; (n为变量)。不过C++中有些可以使用的函数在G++中是没有的,这点要注意啊。所以很多C++编译通过的代码到G++上就CE了,对于G++也是如此。而且貌似两种编译器的编译的程序在浮点数精度控制上有差异。一些计算几何题目使用G++就WA,而使用C++就可AC。虽然我写代码一直用G++,但是这个的具体原因也搞不清出。追问

谢谢你的详细回答
还有:
为什么同一个代码用c++编译器的话内存只占g++编译器的一半,我用的int数组

是不是c++中的int是2字节啊?我很纳美呀!

追答

不是,目前int大小基本上都是4bit,原因可能是编译器的优化问题(比如对堆栈的优化),也有可能是自身代码的问题导致的。有问题的代码可能会导致这种情况。

追问

不过好像使用差距有点大啊?优化掉不少空间呢!
谢谢了,哈哈!

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-12-28
g++编译的程序占用内存大,速度快,这很好理解啊,就是牺牲空间换取速度啊。追问

可是是怎样做到的呢?
表示费解啊!

追答

那你要看编译器使用什么算法实现的啊,具体我不是很清楚,大致明白这个原理,如果你想详细了解的话,你去看一下C++和G++编译器的实现吧。

第2个回答  2012-12-27
g++ 是gnu的编译器
c++ 是vc++6.0
而且那个g++要新一些,推荐使用。追问

谢谢你的详细回答
还有:
为什么同一个代码用c++编译器的话内存只占g++编译器的一半,我用的int数组
是不是c++中的int是2字节啊?我很纳美呀!

追答

C/C++的int大小取决于编译环境
如16位的Turbo C中int是2字节
而32位的VC++/G++ 等是4字节

相似回答