先决条件: C++中的模板
通常,带有单个参数的C++模板如下所示:
template
但是已经看到,模板可以具有多个参数。相同的语法为:
template
where, n is the number of arguments.
也可以使用非类型参数(基本/派生数据类型),即,除了类型参数T外,还可以使用其他参数,例如字符串,函数名称,常量表达式和内置数据类型。
范例1:
template
class Array {
private:
// Automatic array initialization
T Arr[size]
.....
.....
};
解释:
在上面的示例中,模板提供了数组的大小作为参数。这意味着编译器本身在编译时就知道数组的大小。每当创建模板类时都必须指定参数。
范例2:
// Array of 10 integers
Array a1
// Array of 5 double type numbers
Array a2
// String of size 9
Array a3
where size is given as an argument to the template class.
以下是允许的参数:
- 常数表达式
- 具有外部链接的函数或对象的地址
- 静态类成员的地址。
下面是说明非类型模板的程序:
C++
// C++ program to implement bubble sort
// by using Non-type as function parameters
#include
using namespace std;
// Function to swap two numbers
template
void swap_(T* x, T* y)
{
T temp = *x;
*x = *y;
*y = temp;
}
// Function to implement the Bubble Sort
template
void bubble_sort(T arr[])
{
for (int i = 0; i < size - 1; i++) {
// Last i elements are already
// in place
for (int j = 0; j < size - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// Swap operation
swap_(&arr[j], &arr[j + 1]);
}
}
}
}
// Function to print an array
template
void printArray(T arr[])
{
int i;
for (i = 0; i < size - 1; i++) {
cout << arr[i] << ", ";
}
cout << arr[size - 1] << endl;
}
// Driver Code
int main()
{
// Given array arr[]
float arr[] = { 1.1, 1.2, 0.3, 4.55, 1.56, 0.6 };
const int size_arr = sizeof(arr) / sizeof(arr[0]);
// Size of the array passed as
// an argument to the function
bubble_sort(arr);
cout << "Sorted Array is: ";
printArray(arr);
return 0;
}
输出:
Sorted Array is: 0.3, 0.6, 1.1, 1.2, 1.56, 4.55
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。