信人: pennyliang (世界很美好,值得去奋斗), 信区: CPlusPlus
标 题: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 13:15:45 2006)
令vect 为vector型的一个向量。现在需要遍历其全部元素,以下代码那个最好,那
个有错误,你认为是否有更好的方法?
1)
for(size_t i = 0 ; i=0; --i)
{
}
4)
for(int i = vect.size()-1 ; i>=0; --i)
{
}
--
※ 来源:.南京大学小百合站 http://bbs.nju.edu.cn [FROM: 202.106.180.62]
[本篇全文] [回复本文] [本篇作者: ufx222] [本篇人气: 25] 1
发信人: ufx222 (不许回头), 信区: CPlusPlus
标 题: Re: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 13:19:23 2006)
3最好
4有warning
还对?
--
※ 来源:.南京大学小百合站 http://bbs.nju.edu.cn [FROM: 210.29.249.31]
[本篇全文] [回复本文] [本篇作者: pennyliang] [本篇人气: 14] 2
发信人: pennyliang (世界很美好,值得去奋斗), 信区: CPlusPlus
标 题: Re: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 14:13:57 2006)
中计了....3是错误的.
--
※ 来源:.南京大学小百合站 http://bbs.nju.edu.cn [FROM: 202.106.180.62]
[本篇全文] [回复本文] [本篇作者: ufx222] [本篇人气: 19] 3
发信人: ufx222 (不许回头), 信区: CPlusPlus
标 题: Re: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 14:16:12 2006)
.........
我懂了:(
vector是个奇怪的东西
--
※ 来源:.南京大学小百合站 http://bbs.nju.edu.cn [FROM: 210.29.249.31]
[本篇全文] [回复本文] [本篇作者: pennyliang] [本篇人气: 20] 4
发信人: pennyliang (世界很美好,值得去奋斗), 信区: CPlusPlus
标 题: Re: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 14:23:19 2006)
关键问题在于size_t是无符号型,也就是它总是大约等于0,这个循环是一个死循环.
那么能不能给出一个最好的解法,来遍历向量呢?
--
※ 来源:.南京大学小百合站 http://bbs.nju.edu.cn [FROM: 202.106.180.62]
[本篇全文] [回复本文] [本篇作者: ufx222] [本篇人气: 23] 5
发信人: ufx222 (不许回头), 信区: CPlusPlus
标 题: Re: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 14:32:36 2006)
我从来都是用宏的
#define VAR(a,b) __typeof(b) a=(b)
#define FOREACH(it,c) for(VAR(it,(c).begin());it!=(c).end();++it)
--
※ 来源:.南京大学小百合站 http://bbs.nju.edu.cn [FROM: 210.29.249.31]
[本篇全文] [回复本文] [本篇作者: ora] [本篇人气: 19] 6
发信人: ora (旧日C来·逝S流年...), 信区: CPlusPlus
标 题: Re: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 14:36:40 2006)
__typeof?看上去不错。不过貌似是两个下划线的,编译器支持情况怎么样?
通常只会老老实实写 iterator~~
--
※ 来源:.南京大学小百合站 bbs.nju.edu.cn.[FROM: 159.226.21.63]
[本篇全文] [回复本文] [本篇作者: ufx222] [本篇人气: 20] 7
发信人: ufx222 (不许回头), 信区: CPlusPlus
标 题: Re: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 14:39:07 2006)
是两个下划线呀……
我一直用的GCC系列的编译器,VC6这么写很麻烦,高版本的VC不知道
--
※ 来源:.南京大学小百合站 http://bbs.nju.edu.cn [FROM: 210.29.249.135]
[本篇全文] [回复本文] [本篇作者: pennyliang] [本篇人气: 19] 8
发信人: pennyliang (世界很美好,值得去奋斗), 信区: CPlusPlus
标 题: Re: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 15:16:09 2006)
这个宏展开对性能有什么提升呢?
--
※ 来源:.南京大学小百合站 http://bbs.nju.edu.cn [FROM: 202.106.180.62]
[本篇全文] [回复本文] [本篇作者: ufx222] [本篇人气: 24] 9
发信人: ufx222 (不许回头), 信区: CPlusPlus
标 题: Re: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 15:43:24 2006)
有。
--
※ 来源:.南京大学小百合站 http://bbs.nju.edu.cn [FROM: 210.29.249.135]
[本篇全文] [回复本文] [本篇作者: pennyliang] [本篇人气: 19] 10
发信人: pennyliang (世界很美好,值得去奋斗), 信区: CPlusPlus
标 题: Re: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 15:50:51 2006)
指令质量有何改善?宏最大的好处就是节约函数调用开销,通过宏展开,以实际可执行程
序代码臃肿为代价,减少跳转开销,提高cache命中率。但是你这里,有何改善了,为什么
不直接写出来呢?
--
※ 来源:.南京大学小百合站 http://bbs.nju.edu.cn [FROM: 202.106.180.62]
[本篇全文] [回复本文] [本篇作者: ufx222] [本篇人气: 26] 11
发信人: ufx222 (不许回头), 信区: CPlusPlus
标 题: Re: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 15:54:32 2006)
我指的是
对于容器的访问,尽量用iterator
至于用宏只是我写代码的风格,写代码快一点。
我为论文实现时,只用C的。只有写赛场上的程序,我才用这样风格的程序。
--
※ 来源:.南京大学小百合站 http://bbs.nju.edu.cn [FROM: 210.29.249.135]
[本篇全文] [回复本文] [本篇作者: pennyliang] [本篇人气: 28] 12
发信人: pennyliang (世界很美好,值得去奋斗), 信区: CPlusPlus
标 题: Re: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 16:09:36 2006)
原来如此
--
※ 来源:.南京大学小百合站 http://bbs.nju.edu.cn [FROM: 202.106.180.62]
[本篇全文] [回复本文] [本篇作者: ppliu] [本篇人气: 51] 13
发信人: ppliu (世间若无两全法,宁负如来不负卿), 信区: CPlusPlus
标 题: Re: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 19:49:04 2006)
FYI, boost has a real portable implementation of foreach, the BOOST_FOREACH, w
hich used a bunch of very clever tricks to deduce the type of the initializati
on clause.
Using __typeof is convenient, but non-portable.
--
※ 来源:.南京大学小百合站 http://bbs.nju.edu.cn [FROM: 210.28.131.114]
[本篇全文] [回复本文] [本篇作者: pennyliang] [本篇人气: 48] 14
发信人: pennyliang (世界很美好,值得去奋斗), 信区: CPlusPlus
标 题: Re: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 20:39:17 2006)
老鸟啊。。。。
--
※ 来源:.南京大学小百合站 http://bbs.nju.edu.cn [FROM: 61.135.7.196]
标 题: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 13:15:45 2006)
令vect 为vector型的一个向量。现在需要遍历其全部元素,以下代码那个最好,那
个有错误,你认为是否有更好的方法?
1)
for(size_t i = 0 ; i=0; --i)
{
}
4)
for(int i = vect.size()-1 ; i>=0; --i)
{
}
--
※ 来源:.南京大学小百合站 http://bbs.nju.edu.cn [FROM: 202.106.180.62]
[本篇全文] [回复本文] [本篇作者: ufx222] [本篇人气: 25] 1
发信人: ufx222 (不许回头), 信区: CPlusPlus
标 题: Re: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 13:19:23 2006)
3最好
4有warning
还对?
--
※ 来源:.南京大学小百合站 http://bbs.nju.edu.cn [FROM: 210.29.249.31]
[本篇全文] [回复本文] [本篇作者: pennyliang] [本篇人气: 14] 2
发信人: pennyliang (世界很美好,值得去奋斗), 信区: CPlusPlus
标 题: Re: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 14:13:57 2006)
中计了....3是错误的.
--
※ 来源:.南京大学小百合站 http://bbs.nju.edu.cn [FROM: 202.106.180.62]
[本篇全文] [回复本文] [本篇作者: ufx222] [本篇人气: 19] 3
发信人: ufx222 (不许回头), 信区: CPlusPlus
标 题: Re: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 14:16:12 2006)
.........
我懂了:(
vector是个奇怪的东西
--
※ 来源:.南京大学小百合站 http://bbs.nju.edu.cn [FROM: 210.29.249.31]
[本篇全文] [回复本文] [本篇作者: pennyliang] [本篇人气: 20] 4
发信人: pennyliang (世界很美好,值得去奋斗), 信区: CPlusPlus
标 题: Re: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 14:23:19 2006)
关键问题在于size_t是无符号型,也就是它总是大约等于0,这个循环是一个死循环.
那么能不能给出一个最好的解法,来遍历向量呢?
--
※ 来源:.南京大学小百合站 http://bbs.nju.edu.cn [FROM: 202.106.180.62]
[本篇全文] [回复本文] [本篇作者: ufx222] [本篇人气: 23] 5
发信人: ufx222 (不许回头), 信区: CPlusPlus
标 题: Re: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 14:32:36 2006)
我从来都是用宏的
#define VAR(a,b) __typeof(b) a=(b)
#define FOREACH(it,c) for(VAR(it,(c).begin());it!=(c).end();++it)
--
※ 来源:.南京大学小百合站 http://bbs.nju.edu.cn [FROM: 210.29.249.31]
[本篇全文] [回复本文] [本篇作者: ora] [本篇人气: 19] 6
发信人: ora (旧日C来·逝S流年...), 信区: CPlusPlus
标 题: Re: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 14:36:40 2006)
__typeof?看上去不错。不过貌似是两个下划线的,编译器支持情况怎么样?
通常只会老老实实写 iterator~~
--
※ 来源:.南京大学小百合站 bbs.nju.edu.cn.[FROM: 159.226.21.63]
[本篇全文] [回复本文] [本篇作者: ufx222] [本篇人气: 20] 7
发信人: ufx222 (不许回头), 信区: CPlusPlus
标 题: Re: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 14:39:07 2006)
是两个下划线呀……
我一直用的GCC系列的编译器,VC6这么写很麻烦,高版本的VC不知道
--
※ 来源:.南京大学小百合站 http://bbs.nju.edu.cn [FROM: 210.29.249.135]
[本篇全文] [回复本文] [本篇作者: pennyliang] [本篇人气: 19] 8
发信人: pennyliang (世界很美好,值得去奋斗), 信区: CPlusPlus
标 题: Re: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 15:16:09 2006)
这个宏展开对性能有什么提升呢?
--
※ 来源:.南京大学小百合站 http://bbs.nju.edu.cn [FROM: 202.106.180.62]
[本篇全文] [回复本文] [本篇作者: ufx222] [本篇人气: 24] 9
发信人: ufx222 (不许回头), 信区: CPlusPlus
标 题: Re: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 15:43:24 2006)
有。
--
※ 来源:.南京大学小百合站 http://bbs.nju.edu.cn [FROM: 210.29.249.135]
[本篇全文] [回复本文] [本篇作者: pennyliang] [本篇人气: 19] 10
发信人: pennyliang (世界很美好,值得去奋斗), 信区: CPlusPlus
标 题: Re: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 15:50:51 2006)
指令质量有何改善?宏最大的好处就是节约函数调用开销,通过宏展开,以实际可执行程
序代码臃肿为代价,减少跳转开销,提高cache命中率。但是你这里,有何改善了,为什么
不直接写出来呢?
--
※ 来源:.南京大学小百合站 http://bbs.nju.edu.cn [FROM: 202.106.180.62]
[本篇全文] [回复本文] [本篇作者: ufx222] [本篇人气: 26] 11
发信人: ufx222 (不许回头), 信区: CPlusPlus
标 题: Re: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 15:54:32 2006)
我指的是
对于容器的访问,尽量用iterator
至于用宏只是我写代码的风格,写代码快一点。
我为论文实现时,只用C的。只有写赛场上的程序,我才用这样风格的程序。
--
※ 来源:.南京大学小百合站 http://bbs.nju.edu.cn [FROM: 210.29.249.135]
[本篇全文] [回复本文] [本篇作者: pennyliang] [本篇人气: 28] 12
发信人: pennyliang (世界很美好,值得去奋斗), 信区: CPlusPlus
标 题: Re: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 16:09:36 2006)
原来如此
--
※ 来源:.南京大学小百合站 http://bbs.nju.edu.cn [FROM: 202.106.180.62]
[本篇全文] [回复本文] [本篇作者: ppliu] [本篇人气: 51] 13
发信人: ppliu (世间若无两全法,宁负如来不负卿), 信区: CPlusPlus
标 题: Re: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 19:49:04 2006)
FYI, boost has a real portable implementation of foreach, the BOOST_FOREACH, w
hich used a bunch of very clever tricks to deduce the type of the initializati
on clause.
Using __typeof is convenient, but non-portable.
--
※ 来源:.南京大学小百合站 http://bbs.nju.edu.cn [FROM: 210.28.131.114]
[本篇全文] [回复本文] [本篇作者: pennyliang] [本篇人气: 48] 14
发信人: pennyliang (世界很美好,值得去奋斗), 信区: CPlusPlus
标 题: Re: 有趣的题目,找工作的人来热热身吧
发信站: 南京大学小百合站 (Thu Nov 9 20:39:17 2006)
老鸟啊。。。。
--
※ 来源:.南京大学小百合站 http://bbs.nju.edu.cn [FROM: 61.135.7.196]