【摘要】:逆转算法用于将容器或序列中的元素按逆向顺序反转,即第1个元素变成倒数第一个元素,第2个元素变成倒数第二个元素,依次反转。STL提供了两种可以实现逆转功能的算法:reverse()和reverse_copy()。值得注意的是,上述两种算法的参数均是迭代器。通过迭代器可以指定需要逆转的元素的范围,也就是说,既可以逆转整个容器中的所有元素,也可以逆转容器中的部分元素。List型容器的迭代器在移动时,其使用方法和vector型容器是不同的。
逆转算法用于将容器或序列中的元素按逆向顺序反转,即第1个元素变成倒数第一个元素,第2个元素变成倒数第二个元素,依次反转。STL提供了两种可以实现逆转功能的算法:reverse()和reverse_copy()。
这两种算法均使用双向迭代器,其原型为:
reverse()算法会将[beg,end]中的元素全部逆序;reverse_copy()算法会将[source-Beg,sourceEnd]内的元素复制到“以destBeg起始的目标区间”,并在复制过程中颠倒元素次序。reverse_copy()算法返回区间内最后一个被复制元素的下一位置,即第一个未被覆盖的元素。
在使用过程中,程序员必须确保目标区间足够大,否则需要使用插入型迭代器。
值得注意的是,上述两种算法的参数均是迭代器。通过迭代器可以指定需要逆转的元素的范围,也就是说,既可以逆转整个容器中的所有元素,也可以逆转容器中的部分元素。
例4-21
(www.xing528.com)
例4-21的执行效果如图4-21所示。
图4-21 例4-21的执行效果
总结
为什么没有使用assign()直接赋值一个常量数组到list型的容器?
List型容器的迭代器在移动时,其使用方法和vector型容器是不同的。vector型迭代器在移动时可以使用加法运算(如例4-21中所示),而list型迭代器需要使用advance()函数。本小节在此前介绍了advance()。advance()可以方便地实现容器的迭代器的前进和后退。
只有随机访问型迭代器才可以使用加、减法运算,直接将偏移量加到迭代器上。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。