使用cpp模板写一段排序
时间: 2023-01-15 16:59:00 浏览: 78
好的,这是使用 C++ 模板来写的一段排序的代码:
```
template <typename T>
void sort(T arr[], int size)
{
for (int i = 0; i < size - 1; i++)
{
for (int j = i + 1; j < size; j++)
{
if (arr[i] > arr[j])
{
T temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
```
这段代码使用了模板,因此可以用来排序任意类型的数组。要使用这段代码,只需要在调用时传入数组和数组的大小即可。例如:
```
int arr[] = {3, 1, 2};
sort(arr, 3);
```
这样,数组 `arr` 就会被按升序排序。
希望这能帮到你!
相关问题
用cpp写一段希尔排序
以下是使用C++编写的希尔排序代码:
```cpp
#include <iostream>
using namespace std;
void shellSort(int arr[], int n) {
for (int gap = n/2; gap > 0; gap /= 2) {
for (int i = gap; i < n; i++) {
int temp = arr[i];
int j;
for (j = i; j >= gap && arr[j - gap] > temp; j -= gap) {
arr[j] = arr[j - gap];
}
arr[j] = temp;
}
}
}
int main() {
int arr[] = {5, 9, 1, 3, 4, 6, 6, 3, 2};
int n = sizeof(arr)/sizeof(arr[0]);
shellSort(arr, n);
cout << "Sorted array: ";
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
return 0;
}
```
在这个实现中,我们使用了希尔排序的标准实现,其中我们首先确定了一个初始间隔(gap),然后在每一次迭代中将gap减半,直到gap为1为止。在每个迭代中,我们将数组分成gap个子序列,并对每个子序列进行插入排序,直到整个数组被排序为止。
使用cpp11写一个单例模板
这是一个使用 C++11 实现的单例模板的示例:
```cpp
template <typename T>
class Singleton
{
public:
static T& getInstance()
{
static T instance;
return instance;
}
private:
Singleton() {}
~Singleton() {}
Singleton(const Singleton&) = delete;
Singleton& operator=(const Singleton&) = delete;
Singleton(Singleton&&) = delete;
Singleton& operator=(Singleton&&) = delete;
};
```
使用方法:
```cpp
class MyClass : public Singleton<MyClass>
{
friend Singleton<MyClass>;
private:
MyClass() {}
};
int main()
{
MyClass& instance = MyClass::getInstance();
return 0;
}
```