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';
}
相关推荐
我命由我123456 分钟前
PDFBox - PDF 页面坐标系、PDF 页面尺寸获取、PDF 页面位置计算
java·服务器·开发语言·笔记·后端·java-ee·pdf
小苏兮10 分钟前
【数据结构】二叉搜索树
开发语言·数据结构·c++·学习·1024程序员节
腾昵猫13 分钟前
程序员的自我修养(三)
c++
ᐇ95914 分钟前
Java 程序运行原理与内存模型解析
java·开发语言
晨曦(zxr_0102)19 分钟前
CSP-X 2024 复赛编程题全解(B4104+B4105+B4106+B4107)
数据结构·c++·算法
ai安歌19 分钟前
【Rust编程:从新手到大师】 Rust 控制流深度详解
开发语言·算法·rust
Shinom1ya_21 分钟前
算法 day 36
算法
·白小白22 分钟前
力扣(LeetCode) ——15.三数之和(C++)
c++·算法·leetcode
海琴烟Sunshine24 分钟前
leetcode 268. 丢失的数字 python
python·算法·leetcode
czhc114007566325 分钟前
JAVA1027抽象类;抽象类继承
android·java·开发语言