C++ 算法 rotate_copy()

2024年8月30日 | 5分钟阅读

C++ 算法 rotate_copy() 函数用于在范围 [first, last) 中创建元素的旋转副本。

  • 序列将从源序列中间的元素开始,最后一个元素之后是第一个元素。
  • 它将第一个元素和中间元素之间的元素附加到中间元素和最后一个元素之间的元素。

语法

参数

first:一个前向迭代器,指向要旋转的范围中第一个元素的位置。

middle:一个前向迭代器,指向范围 [first, last) 内的元素,该元素被移动到范围中的第一个位置。

last:一个前向迭代器,指向正在反转元素的范围中最后一个元素的后一个位置。

result:一个输出迭代器,指向目标范围中第一个元素的位置。

返回值

rotate_copy() 函数返回一个输出迭代器,指向复制范围的末尾。

复杂度

复杂度与范围 [first, last) 成线性关系:为每个元素执行一次赋值。

数据竞争

访问范围 [first, last) 中的对象。

结果和返回值之间的范围内的对象被更改。

异常

如果元素赋值或迭代器上的操作抛出异常,此函数将抛出异常。

注意:无效参数会导致未定义行为。

示例 1

让我们看一个旋转给定字符串的简单示例

输出

Before Rotate :  N I K I T A
After Rotate   :  I K I T A N

示例 2

让我们看另一个简单示例

输出

3 4 5 1 2

示例 3

让我们看另一个简单示例

输出

Character array s[] : 1. A  2. B  3. C  4. D  5. E  6. F  7. G  8. H  
Rotate s[] with 'C' as middle element and copy in t[]
Character array t[] : 1. C  2. D  3. E  4. F  5. G  6. H  7. A  8. B  
Rotate t[] with 'A' as middle element and copy in s[]
Character array s[] : 1. A  2. B  3. C  4. D  5. E  6. F  7. G  8. H  
Character array t[] : 1. C  2. D  3. E  4. F  5. G  6. H  7. A  8. B  

示例 4

让我们看另一个简单示例

输出

Before calling rotate_copy:

Try this Tongue Twister: she sells sea shells by the sea shore 

After calling rotate_copy:

Tongue_Twister: she sells sea shells by the sea shore 

Now try the rotated Tongue Twister: shells by the sea shore she sells sea

下一主题C++ 算法