c++ STL swap用法和实现

一:功能

交换两个值

二:用法

cpp 复制代码
#include <format>
#include <iostream>

namespace Library {
struct Storage {
	int value;
};

//支持swap操作
void swap(Storage& left, Storage& right) {
	std::ranges::swap(left.value, right.value);
}
}

int main() {
	int a = 1, b = 2;
	std::ranges::swap(a, b); // 3-step-swap
    
    std::format_to(std::ostreambuf_iterator(std::cout),
        "a == {}, b == {}\n", a, b);

	Library::Storage j{2}, k{3};
	std::ranges::swap(j, k); // calls custom Library::swap()

    std::format_to(std::ostreambuf_iterator(std::cout),
        "j == {}, k == {}\n", j.value, k.value);
}

三:实现

cpp 复制代码
#include <algorithm>
#include <iostream>
  
template<typename T>
void my_swap(T &a,T &b) noexcept
{
    T temp = std::move(a);
    a = std::move(b);
    b = std::move(temp);
}

int main()
{
    int a = 5, b = 3;
    std::cout << a << ' ' << b << '\n';
    my_swap(a, b);
    std::cout << a << ' ' << b << '\n';
}
相关推荐
爱吃小胖橘21 分钟前
Unity网络开发--超文本传输协议Http(1)
开发语言·网络·网络协议·http·c#·游戏引擎
郝学胜-神的一滴29 分钟前
使用Linux的read和write系统函数操作文件
linux·服务器·开发语言·数据库·c++·程序人生·软件工程
小火柴12342 分钟前
利用R语言绘制直方图
开发语言·r语言
2301_803554521 小时前
C++联合体(Union)详解:与结构体的区别、联系与深度解析
java·c++·算法
pu_taoc1 小时前
深入剖析:基于epoll与主从Reactor模型的高性能服务器设计与实现
服务器·c语言·c++·vscode
csbysj20201 小时前
React 表单与事件
开发语言
初圣魔门首席弟子1 小时前
c++ bug 函数定义和声明不一致导致出bug
开发语言·c++·bug
IT小农工1 小时前
Word 为每一页设置不同页边距(VBA 宏)
开发语言·c#·word
sali-tec2 小时前
C# 基于halcon的视觉工作流-章42-手动识别文本
开发语言·人工智能·算法·计算机视觉·c#·ocr