C++ Algorithm swap_ranges()

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

C++ Algorithm swap_ranges() 将范围 [first1, last2) 中的元素与从 first2 开始的范围内的元素进行交换。

简而言之,我们可以说 swap_ranges() 交换两个序列的元素,即第一个序列中某个位置的每个元素被第二个序列中相同位置的元素替换,反之亦然。

语法

参数

first1: 指向要交换元素的第一范围的第一个位置的前向迭代器。

last1: 指向要交换元素的第一范围的最终位置之后一个位置的前向迭代器。

first2: 指向要交换元素的第二范围的第一个位置的前向迭代器。

返回值

swap_ranges() 返回一个迭代器,指向要交换元素的第二范围的末尾。

复杂度

复杂度在 first 和 last 之间是线性的。对范围内的每个元素执行交换操作。

数据竞争

两个范围中的对象都会被修改。

异常安全

如果元素赋值或迭代器操作抛出异常,则抛出异常。

示例 1

让我们看一个简单的例子,交换两个向量在给定范围内的元素

输出

v1: 4, 5, 6, 
v2: 1, 2, 3, 7, 8,

在上面的例子中,向量 v1 的元素与向量 v2 从 v1 的起始到结束范围内的元素进行了交换。

示例 2

让我们看一个简单的例子来交换两个向量的内容

输出

1 2 3 4 5 5 6 7 8 9 
0 1 2 3 4 6 7 8 9 10

在上面的例子中,swap_range() 函数将向量 v 的前五个元素与向量 c 的元素进行了交换。

示例 3

让我们看一个简单的例子来交换向量和双端队列的内容

输出

Vector v1 is: ( 0 1 2 3 4 5 ).
Deque d1 is:  ( 6 6 6 6 6 6 ).
After the swap_range vector v1 is: ( 6 6 6 6 6 6 ).
After the swap_range deque d1 is:  ( 0 1 2 3 4 5 ).

在上面的例子中,向量和双端队列的元素相互交换。

示例 4

让我们看另一个简单示例

输出

s1 = Betty Botter bought some butter
s2 = But she said the butter was bitter
s3 = So she got some better butter
s4 = to make the bitter butter better

Jumble them up!!!
s1 = But she said thught some butter
s2 = Betty Botter boe butter was bitter
s3 = to make the bit better butter
s4 = So she got someter butter better

下一主题C++ 算法