C++ 标准库中的reverse 函数使用示例
一.函数原型
1 2 |
|
二.函数参数
first:指向要反转序列起始位置的迭代器
last:指向要反转序列结束位置的下一个位置的迭代器(左闭右开区间 [first, last))
三.使用示例
1.反转数组
1 2 3 4 5 6 7 8 9 10 11 |
|
2.反转vector
1 2 3 4 5 6 7 8 9 10 11 12 |
|
3.反转string
1 2 3 4 5 6 7 8 9 10 |
|
4,反转部分元素
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
四.复杂度分析
时间复杂度:O(n),其中 n 是 last - first,执行大约 n/2 次交换
空间复杂度:O(1),原地操作,不需要额外空间
五.注意事项
- reverse函数要求迭代器是双向迭代器(BidirectionalIterator)。
- 可以用于所有支持双向迭代器的容器:vector、deque、list、string、数组等
- reverse会修改原容器,如果不希望修改原容器,可以使用reverse_copy
六.相关函数
1.reverse_copy
reverse函数不保证稳定性(因为交换元素可能会改变相等元素的相对顺序,但通常我们使用reverse时并不关心这个,因为元素值不同,且即使相同,反转后顺序也变了)。
C++标准库还提供了reverse_copy函数,它可以将反转的结果复制到另一个序列中,而不改变原序列。
- reverse_copy的函数原型:
1 2 3 4 |
|
- 使用示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
2.自定义反转算法实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
3.与反向迭代器的区别
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
到此这篇关于C++ 标准库中的reverse 函数的文章就介绍到这了,
