首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

迭代器的算术操作有关问题

2012-03-12 
迭代器的算术操作问题C++Primer中文版(第4版) 第三章 迭代器的算术操作迭代器相减的问题说相减两个迭代器

迭代器的算术操作问题
C++Primer中文版(第4版) 第三章 迭代器的算术操作
迭代器相减的问题 
说相减两个迭代器必须指向同一vector中的元素或vector末端之后的下一个元素。
这里vector末端之后的下一个元素 到底是什么意思啊。

[解决办法]
迭代器类似于指针,同一个vector中的元素相减才有意义,vector末端之后的下一个元素是指vector尾地址的下一个地址
[解决办法]
由end操作返回的迭代器并不指向vector中任何实际的元素,相反,它只是起一个哨兵(sentinel)的作用,表示我们已处理完vector中所有元素。
[解决办法]
那个元素是一个无效的对象(理解成不存在也行吧)。访问一个无效的对象才是错的。但是指向一个无效的位置却没有错。只要不对它解引用就行了。
[解决办法]

探讨

引用:
那两个指向无效的对象的迭代器相减会得到什么,有什么意义啊。


对于一个vector来说。从begin()到end()(包含end())这个区间的迭代器都是合法的(虽然end()不可被解引用,但也可以参与相减运算)。

例如end()-begin();就是整个vector的大小。

热点排行
Bad Request.