学习STL的同学经常会看到一个名词——迭代器,在以前的学习中也一定听说过指针,它俩的同和异有哪些呢?
推荐学习指针的博客:https://blog.youkuaiyun.com/c20190102/article/details/71092931
我自己也说几句。
迭代器(iterator)是C++为了便于提取STL容器中元素而设的一个类型,它同指针一样具有==,!=,++,--的操作。但迭代器是类模版,而指针是指向一个元素的地址的类型,性质上就是不同的,千万不能混为一谈。
迭代器与指针很像,也有*(解除引用操作)、->(结构体访问成员操作)和加减法。
加减要特别提一下。指针中的加减指的是地址上的加减;迭代器的加减是按那个特点容器的加减来定义的,一般是获得下(上)一个元素的迭代器。
对于STL中的begin()和end()函数,S(hen)B(en)正老师告诉我,它的有效范围是begin()~end()-1,end()上是空的。难怪sort(a+1,a+n+1),+n还要再+1;而sort(begin(),end())却不必+1。