C ++如何在类型不同的两个变量之间建立交换函数

长命

我要创建交换函数,该函数可以将两种不同类型的变量作为参数。例如)

int a = 2;
double b = 1.1
swap(a,b)//wish a = 1.1, b = 2
    template<typename T, typename U>
    void swap(T& x, U& y)//it doesn't work due to automatic type cast
    {
        U temp = x;
        x = y;
        y = temp;
        
       std::cout << "swap" << std::endl;
    }
阿斯莫

您不能这样做,因为不能更改对象类型。该double将被截断为int,该整数将被保存为double。但是,您可以使用std::variants,如下所示

#include <variant>
#include <iostream>

void swapDoubleVariantByIntOne(std::variant<int, double>& intVar, std::variant<int, double>& doubleVar)
{
    auto temp = std::get<double>(doubleVar);
    doubleVar = std::get<int>(intVar);
    intVar = temp;
    std::cout << "swap" << std::endl;
}
int main(){
    std::variant<int, double> a = 2;
    std::variant<int, double> b = 1.1;
    swapDoubleVariantByIntOne(a, b);
    std::cout << "a: " << std::get<double>(a)<< " b: " << std::get<int>(b) ;

}

演示版

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在C#中交换两个引用类型的变量

如何在函数之间同时交换两个变量?

C ++ 11:如何编写两个返回类型不同的模板函数

如何在两个不同的 C 程序之间进行同步?

如何在两个对象数组之间建立交集

如何在两个 C++ 类之间共享互斥量、条件变量和队列?

c++ - 如何将两个不同类型的变量分配给一个变量

如何在C#图表中添加两个不同的类型系列?

C ++中两个向量之间的元素交换

在C ++函数中返回两种不同类型的两个值

C#-如何在两个不同的dll中引用同一类型?

如何在多线程c ++ 17程序中交换两个指针?

如何在C#WPF中通过拖放操作交换两个标签的数据?

如何在Objective-C中对可以交换两个元素的数组进行排序

c可以声明两个具有相同名称,返回类型但参数不同的函数

如何交换两个 SyntaxNode (Roslyn C#)

在c中交换两个结构

在两个 XS Perl 模块之间共享 C 函数

C ++模板:调用两个选项之间匹配的函数

两个C文件之间的全局内联函数

在C中具有相同大小的两个不同类型之间有什么区别?

如何在 C# 中创建一个填充两个 DataGridView 的函数

如何避免C ++中两个库的变量/函数冲突

如何在两个进程之间传递值(.net c#exe)

如何在C中的两个HTML之间匹配文本数据

如何在C ++中的两个向量之间移动项目

如何在C#中获取两个日期之间的日期

如何在C ++中应用两个列表之间的交集?

如何在C中的两个printf之间等待一秒钟?