STL里,如何判断一个iterator是否有效?
我的程序里使用了list,装载一些数据,同时我又声明了一个iterator,用于指示当前所使用的element。
问题是:该怎么正确初始化iterator呢?把它赋值为NULL似乎是行不通的,进一步带来一个问题,如何判断一个iterator是正确指向了某个element呢?用指针的话一般是和NULL作判断的,STL里有这样一个值吗?
[解决办法]
迭代器的有效性是程序员保证的。
对于会导致迭代器实效的操作,
通常都返回一个新的有效的迭代器,
后续操作使用这个新的迭代器进行就可以了。
如果使用无效迭代器,
那么就 ......
[解决办法]
要使用的时候才定义,定义就立即初始化。
[解决办法]
iter = x.begin();
--iter; //iter == x.end(),对吗?
==========
不能这样判断啊.
[解决办法]
回复人:jixingzhong(瞌睡虫·星辰) ( 四星(高级)) 信誉:100 2007-6-13 11:44:23 得分:0
迭代器的有效性是程序员保证的。
看msdn,都有说明了,在进行了一些插入删除操作之后迭代器会失效,需要重新更新,这个工作stl本身没有做,要求程序员自己把握的
在c/c++里,其实指针都算是有效的,就看它指的那块空间是否还是程序员期望中那块空间。