在Java、C#和C++中遍历集合

在Java中,常见的遍历集合方式如下:

None.gif Iterator iter  =  list.iterator();
ExpandedBlockStart.gifContractedBlock.gif
while  (iter.hasNext())  dot.gif {
InBlock.gif Object item 
= iter.next();
ExpandedBlockEnd.gif}

也可以使用for

ExpandedBlockStart.gif ContractedBlock.gif for  (Iterator iter  =  list.iterator(); iter.hasNext())  dot.gif {
InBlock.gif   Object item 
= iter.next();
ExpandedBlockEnd.gif}


JDK 1.5引入的增强的for语法

None.gif List list  =  dot.gif
ExpandedBlockStart.gifContractedBlock.gif
for  (Integer item : list)  dot.gif {
ExpandedBlockEnd.gif}

在C#中,遍历集合的方式如下:

None.gif foreach  (Object item  in  list) 
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
ExpandedBlockEnd.gif}

其实你还可以这样写,不过这样写的人很少而已

None.gif IEnumerator e  =  list.GetEnumerator();
None.gif
while  (e.MoveNext()) 
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif Object item 
= e.Current;
ExpandedBlockEnd.gif}

在C# 2.0中,foreach能够作一定程度的编译期类型检查。例如:

None.gif IList < int >  intList  =  dot.gif
ExpandedBlockStart.gifContractedBlock.gif
foreach (String item  in  intList)  dot.gif { }   // 编译出错


在C++标准库中。for_each是一种算法。定义如下:
for_each(InputIterator beg, InputIterator end, UnaryProc op)
C++中,由于能够重载运算符(),所以有一种特殊的对象,仿函数。

None.gif template < class  T >
ExpandedBlockStart.gifContractedBlock.gif
class  AddValue  dot.gif {
InBlock.gif    
private:
InBlock.gif        T theValue;
InBlock.gif    
public:
ExpandedSubBlockStart.gifContractedSubBlock.gif        AddValue(
const T& v) : theValue(v) dot.gif{
ExpandedSubBlockEnd.gif        }

InBlock.gif        
ExpandedSubBlockStart.gifContractedSubBlock.gif        
void operator() (T& elem) const dot.gif{
InBlock.gif            elem 
+= theValue;
ExpandedSubBlockEnd.gif        }

ExpandedBlockEnd.gif}
;
None.gif
None.gifvector
< int >  v;
None.gifINSERT_ELEMENTS(v, 
1 9 );
None.gif
None.giffor_each (v.begin(), v.end(), AddValue
< int > ( 10 ));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值