用cpp使用定义类模板交换两个数
时间: 2024-03-02 16:54:39 浏览: 34
可以使用类模板来定义一个交换两个数的类,代码如下:
```cpp
template<typename T>
class Swap {
public:
void swap(T& a, T& b) {
T temp = a;
a = b;
b = temp;
}
};
```
然后在主程序中,可以实例化该类并调用其`swap`方法来交换两个数,代码如下:
```cpp
int main() {
int a = 1, b = 2;
Swap<int> s;
s.swap(a, b);
cout << "a = " << a << ", b = " << b << endl;
return 0;
}
```
输出结果为:
```
a = 2, b = 1
```
相关问题
定义一个数组类模板Array,完成以下工作:输入、输出、排序。
以下是一个简单的数组类模板Array的实现:
```cpp
template<typename T, int size>
class Array {
private:
T data[size];
public:
Array() {}
void input() {
for(int i = 0; i < size; i++) {
cin >> data[i];
}
}
void output() {
for(int i = 0; i < size; i++) {
cout << data[i] << " ";
}
cout << endl;
}
void sort() {
for(int i = 0; i < size - 1; i++) {
for(int j = i + 1; j < size; j++) {
if(data[j] < data[i]) {
swap(data[i], data[j]);
}
}
}
}
};
```
在这个模板中,我们使用了模板参数T和size,分别表示数组的元素类型和大小。在类的私有部分,我们定义了一个T类型的数组data[size],用于存储数组的元素。在公有部分,我们定义了三个函数:input、output和sort。
input函数用于从标准输入流中读入数组的元素,它使用一个循环来遍历数组的所有元素,并使用cin读入每个元素。
output函数用于将数组的元素输出到标准输出流中,它也使用一个循环来遍历数组的所有元素,并使用cout输出每个元素。
sort函数用于对数组的元素进行排序,它使用两个循环来遍历数组的所有元素,并使用swap函数来交换需要调换的元素。
在使用这个模板时,我们需要在定义一个Array类型的对象时指定T和size的值,例如:
```cpp
Array<int, 5> a; // 定义一个包含5个int类型元素的数组
```
然后我们就可以使用对象的input、output和sort函数来完成输入、输出和排序操作了,例如:
```cpp
a.input(); // 从标准输入流中读入5个int类型的元素
a.output(); // 输出这5个元素
a.sort(); // 对这5个元素进行排序
a.output(); // 输出排序后的结果
```
1、使用函数模板实现swap(\\\\&x,\\\\&y)交换两个实参变量a和b的指。
好的,这里是使用函数模板实现swap(&x, &y)交换两个实参变量a和b的值的示例代码:
```cpp
#include <iostream>
template <typename T>
void swap(T& x, T& y) {
T temp = x;
x = y;
y = temp;
}
int main() {
int a = 1, b = 2;
std::cout << "Before swap: a = " << a << ", b = " << b << std::endl;
swap(a, b);
std::cout << "After swap: a = " << a << ", b = " << b << std::endl;
return 0;
}
```
在这个示例中,我们定义了一个函数模板 `swap`,它接受两个参数 `x` 和 `y`,类型为模板参数 `T` 的引用。在函数体内,我们定义了一个临时变量 `temp`,将 `x` 的值赋给 `temp`,然后将 `y` 的值赋给 `x`,最后将 `temp` 的值赋给 `y`,从而实现了 `x` 和 `y` 的交换。
在 `main` 函数中,我们定义了两个整型变量 `a` 和 `b`,并将它们的值分别初始化为 1 和 2。然后我们调用 `swap` 函数,将 `a` 和 `b` 的值交换。最后,我们输出交换后的 `a` 和 `b` 的值。