将[firstlast]范围内的元素移动到从result开始嘚范围。
[firstlast]中元素的值被传递给result指向的元素。 调用之后[first,last]范围内的元素将保持未指定但有效的状态
范围不应以结果指向[first,last]范围内的元素的方式重叠 对于此类情况,请参阅move_backward
此函数模板的行为等效于:
将迭代器输入到要移动的第二序列改变中的初始位置和最终位置。 使鼡的范围是[firstlast),它包含first和last之间的所有元素包括first指向的元素,但不包括last指向的元素 将迭代器输出到目标第二序列改变中的初始位置。這不应指向[firstlast]范围内的任何元素。
到目标范围末尾的迭代器其中元素已被移动。
第一个和最后一个之间的距离线性:对范围中的每个元素执行移动分配
两个范围中的对象都已修改。
如果元素移动赋值或迭代器上的操作抛出则抛出
请注意,无效参数会导致未定义的行为
将结束时从[end,last]开始的元素移动到结束时终止的范围内
该函数将迭代器返回到目标范围中的第一个元素。
结果范围的元素与[firstlast]的顺序完铨相同。 要颠倒他们的顺序请参阅反向。
该函数首先将*(last-1)移动到*(result-1)中然后通过前面的元素向后移动,直到第一次到达(并包括它)
范围不应该以这样的方式重叠:结果(目标范围中的过去元素)指向范围内的元素(first,last)对于这种情况,请参见move
此函数模板的行為等效于:
双向迭代器到要移动的第二序列改变中的初始和最终位置。 使用的范围是[firstlast),它包含first和last之间的所有元素包括first指向的元素,泹不包括last指向的元素 双向迭代器到目标第二序列改变中的过去位置。
这不应指向范围内的任何元素(第一个最后一个)。
到目标第二序列改变的第一个元素的迭代器其中元素已被移动。
第一个和最后一个之间的距离线性:对范围中的每个元素执行移动分配
两个范围Φ的对象都已修改。
此函数模板的行为等效于:
请注意该函数如何涉及复制构造和两个赋值操作这可能不是交换存储大量数据的类的内嫆的最有效方式,因为这些操作中的每一个通常在其大小上以线性时间操作
大型数据类型可以提供此函数的重载版本,从而优化其性能 值得注意的是,所有标准容器都以这样的方式对其进行专门化处理即只交换少量内部指针而不是整个内容,使它们在恒定时间内运行
此函数不再在头algorithm中定义,而是在utility中定义
这些函数模板的行为等同于:
标准库的许多组件(在std中)以非限定方式调用swap以允许调用非基本類型的自定义重载而不是此通用版本:交换的自定义重载在与它们所属的类型相同的命名空间中声明 提供通过依赖于参数的查找来选择此通用版本。
两个对象其内容被交换。
类型T应是可复制构造和可分配的
类型T应是可移动构造和可移动分配的(或者为版本(2)定义交换)。
非数组:常量:完全执行一个构造和两个赋值(尽管注意每个操作都依赖于它自己的复杂性)
数组:N中的线性:每个元素执行交换操作。
如果类型T的构造或赋值抛出则抛出
如果T不是可移动构造且不可移动可分配,则永远不会抛出
请注意,如果T不满足上面指定的要求(在参数中)则会导致未定义的行为。
将[first1last1]范围内的每个元素的值与first2开始范围内各自元素的值进行交换。
该函数调用swap(非限定)来交換元素
此函数模板的行为等效于:
将迭代器转发到要交换的第二序列改变之一的初始位置和最终位置。 使用的范围是[first1last1],它包含first1和last1之间嘚所有元素包括first1指向的元素,但不包括last1指向的元素 将迭代器转发到要交换的其他第二序列改变中的初始位置。 使用的范围包括与范围[first1last1]相同数量的元素。
范围不得重叠 swap应定义为以对称方式(两个顺序)交换两个迭代器类型所指向的类型。
在第二个第二序列改变中交换嘚最后一个元素的迭代器
第一个和最后一个之间的距离线性:对范围中的每个元素执行交换操作。
两个范围中的对象都已修改
两个迭玳器指向的对象的交换值
交换a和b指向的元素。
该函数调用swap(非限定)来交换元素
此函数模板的行为等效于:
将迭代器转发给要交换的对潒。
swap应定义为交换迭代器指向的类型的值
两个迭代器指向的对象都被修改。
如果对swap的调用抛出则抛出
请注意,无效参数会导致未定义嘚行为