大家都知道在STL中,通过迭代器来访问容器,假设我们现在有迭代器iter
1.迭代器类似指针,其内容是保存指向的内容的地址;
2.在vector和deque中,元素是存储在连续的内存空间中的,所以可以通过迭代器+n来寻找下一个内存地址;而在list中,却不可以通过迭代器+n的方式来进行随即访问,因为list内的元素并不是存储在连续的内存空间中的,而是通过指向下一个元素和前一个元素的指针链接在一起的,这类似于双向链表;
3.在list容器中,却可以通过++iter、iter++、--iter、iter--来访问前一个元素或上一个元素,我想应该是这样的,一个元素中应该包含元素数据、指向前一个元素的指针、指向后一个元素的指针,当执行++或--操作的时候,其实是把元素的指向后一个元素的指针或指向前一个元素的指针赋值到迭代器中。见下图:
以上纯属个人见解,如有错误请指教,本人正学C++,想有一起学习的加QQ群:17877720