posted on 2010-09-25 18:49 sduzgz 阅读(492) 评论(4) 编辑 收藏 引用
不要使用using namespace std; 因为std命名空间里的东西全是一些常见的名字, 像string, vector, list等等,直接使用std::string,以防止重名#define N 100可以使用const常量代替(并且,尽量放到一个空的namespace下),否则你需要定义成#define N (100),加括号,这是常识prim[i]=true;的那个循环可以改成memset(&prim, 1, sizeof prim)for(i=2;i<=sqrt(N);i++)---请把sqrt(N)拿到循环外面来看你写代码的样子,应该是vc6吧,把int i,j;放后面点吧,不过在在未使用的地方就定义变量,比如int j完全可以放到循环内部定义 回复 更多评论
牛人啊,我这习惯确实很多问题啊,命名空间那个我可以明白,你说的prim[i]那个循环还有最后sqrt(N)拿到外面,改成那样有什么好处啊,虽然觉得好,但是不知道为什么。@李现民 回复 更多评论
memset是一种高效的数组初始化方式,它本身是用汇编写的,vc下应该是位于memset.asm中,当你使用部分初始化时, 比如int a[100]={0}, 你会看到它的汇编代码其实用的就是memset。把sqrt(N)拿到外面那个, 你不觉得你的代码中每次循环sqrt(N)都会调用一遍嘛?当然, 现代编译器的话,这种简单的调用可以被优化掉,但作为码农, 你不应该写成这样 回复 更多评论
@李现民 奥,茅塞顿开啊,谢谢啊! 回复 更多评论
Powered by: C++博客 Copyright © sduzgz