没明白你什么意思?你是想比较两个对象的大小?
通常我们遍历容器的写法是
for(std::vector<type>::iterator iter = v.begin(); iter != v.end(); ++iter)
{}
如果写成
for(std::vector<type>::iterator iter = v.begin(); iter < v.end(); ++iter)
{}
是不是会有问题
@Billowen: 不好意思,没看到是C++,我。net。。。
我没有试过这样,但应该不可以,因为v.end()返回的是最后一个元素后面的位置的地址,那个地址的值是什么,就不好说了,说不定是一个很小的值,你可已编一段代码,跟踪一下就知道了。
iter的本质是指针,进行++的时候实际上是指针的偏移,所以你的!=end()和<end()最终起到的结果类似,上面的写法不会有什么问题,不过在项目中尽量保持一种单一的写法比较好。
肯定会出现问题的,end()函数返回是list最后一个元素下一个位置的iter,你代码跟踪一下就知道了!
@风逝一线天:
”end()函数返回是list最后一个元素下一个位置的iter“,这是基础的东西,这句话大家都知道,你想报答什么?我的回答里有说不是这样吗?
下面这两种方式作用是一样的,有问题吗?你想表达什么意思?
for(std::vector<int>::iterator it = vint.begin(); it<vint.end; ++it)
for(std::vector<int>::iterator it = vint.begin(); it!=vint.end; ++it)