C++ 算法 iter_swap()

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

C++ 算法 iter_swap() 交换由两个迭代器 a 和 b 指向的元素。

语法

参数

a:要交换其值的前向迭代器之一。

b:要交换其值的第二个前向迭代器。

返回值

复杂度

Constant

数据竞争

两个迭代器指向的对象都会改变。

异常安全

如果 swap() 函数抛出异常,则抛出异常。

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

示例 1

让我们看一个简单的例子来演示 iter_swap() 的用法。

输出

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

示例 2

让我们看另一个简单示例

输出

9 1 2 3 4 5 6 7 8 0  

在上面的例子中,我们借助两个迭代器交换了 v1 中的元素,其中一个指向 v1 的开头,另一个指向 v1 的末尾。

示例 3

让我们看另一个简单的例子来交换向量的奇数位置和数组的奇数位置。

输出

Vector : 0   0   0   0   0   0   0   0   0   0   
Array  : 1   2   3   4   5   6   7   8   9   10   

Swapping odd places of vector with odd places of array

Vector : 0   2   0   4   0   6   0   8   0   10   
Array  : 1   0   3   0   5   0   7   0   9   0  

示例 4

让我们看另一个简单示例

输出

Here are the contents of v1:
1 2 3 4 5 
Here are the contents of v2:
2 4 6 8 10 

First we swap the end values in v1.
Here are the contents of the revised v1:
5 2 3 4 1 

Then we swap the middle values in v1 and v2.
Here are the contents of the revised v1:
5 2 6 4 1 
Here are the contents of the revised v2:
2 4 3 8 10  

上面的例子说明了 iter_swap() 算法的使用,它交换由两个不同迭代器指向的整数值,这些迭代器可以指向同一个整数向量,也可以指向两个不同的整数向量。

示例 5

让我们再看一个例子来说明 iter_swap() 的用法。

输出

Before calling iter_swap
Numbers { 1 1 2 3 5 8 13 21  }

After calling iter_swap
Numbers { 21 1 2 3 5 8 13 1  }

下一主题C++ 算法