C++ 算法 swap_ranges() 函数

定义和用法

swap_ranges() 函数交换两个相同大小的数据范围内的值。

数据范围通过迭代器指定。

实例

交换 vector 中的两个数据范围:

vector<char> values = {'1', '2', '3', '4', 'w', 'x', 'y', 'z'};
// 交换第 2-3 个元素('2','3')与第 6-7 个元素('x','y')
swap_ranges(values.begin() + 1, values.begin() + 3, values.begin() + 5);
for (char item : values) {
    cout << item << " ";  // 输出:1 x y 4 w 2 3 z
}

亲自试一试

语法

swap_ranges(iterator start1, iterator end1, iterator start2);

参数

参数 描述
start1 必需。指向第一个数据范围起始位置的迭代器。
end1

必需。指向第一个数据范围结束位置的迭代器。

将交换到该位置之前的元素。

start2 必需。指向第二个数据范围起始位置的迭代器。

技术细节

返回: 指向第二个数据范围末尾的迭代器(最后一个被交换元素的下一个位置)。

说明:

  • 两个数据范围不能重叠
  • 时间复杂度为 O(n),其中 n 是交换的元素数量
  • 要求两个范围大小相同,否则行为未定义
  • 适用于所有支持值交换的数据类型

相关页面

教程:C++ 数据结构

教程:C++ 迭代器

教程:C++ 算法