Template Trong C – Techacademy

Trong bài viết này Techacademy sẽ hướng dẫn các bạn tiếp cận tới một kiến thức khá là quan trọng mà mỗi người học lập trình C++ đều phải biết và áp dụng nó. Đó chính là Template.

I. Template Trong C++ Là Gì

Template là một công cụ đơn giản nhưng rất mạnh mẽ trong lập trình C ++. Template giúp truyền các kiểu dữ liệu dưới dạng tham số để không cần phải viết cùng một mã cho các loại dữ liệu khác nhau. Ví dụ, bạn cần viết một hàm sort () để sắp xếp phần từ cho nhiều kiểu dữ liệu khác nhau. Thay vì viết và duy trì nhiều mã, chúng ta có thể viết một sort () và truyền vào tham số là kiểu dữ liệu C ++ sử dụng hai từ khóa để cài đặt template: ‘template’ và ‘typename’. “typename” có thể được thay thế bằng từ khóa “class”

  • Template (khuôn mẫu) là một từ khóa trong C++, và là một kiểu dữ liệu trừu tượng tổng quát hóa cho các kiểu dữ liệu int, float, double, bool…
  • Template trong C++ có 2 loại đó là function template & class template.
  • Template giúp người lập trình định nghĩa tổng quát cho hàm và lớp thay vì phải nạp chồng (overloading) cho từng hàm hay phương thức với những kiểu dữ liệu khác nhau.

Sử dụng template để cài đặt các hàm sau sử dụng cho nhiều kiểu dữ liệu khác nhau: sort(), max(), min(), printArray().

max():

#include <iostream> using namespace std; // One function works for all data types. This would work // even for user defined types if operator ‘>’ is overloaded template <typename T> T myMax(T x, T y) { return (x > y) ? x : y; } int main() { cout << myMax<int>(3, 7) << endl; // Call myMax for int cout << myMax<double>(3.0, 7.0) << endl; // call myMax for double cout << myMax<char>(‘g’, ‘e’) << endl; // call myMax for char return 0; }

Bubble Sort:

// CPP code for bubble sort // using template function #include <iostream> using namespace std; // A template function to implement bubble sort. // We can use this for any data type that supports // comparison operator < and swap works for it. template <class T> void bubbleSort(T a[], int n) { for (int i = 0; i < n – 1; i++) for (int j = n – 1; i < j; j-) if (a[j] < a[j – 1]) swap(a[j], a[j – 1]); } // Driver Code int main() { int a[5] = { 10, 50, 30, 40, 20 }; int n = sizeof(a) / sizeof(a[0]); // calls template function bubbleSort<int>(a, n); cout << ” Sorted array : “; for (int i = 0; i < n; i++) cout << a[i] << ” “; cout << endl; return 0; }

Output:

7 7 g

II. Class Template Trong C++

Giống như các template function, template class rất hữu ích khi một lớp xác định một thứ gì đó độc lập với kiểu dữ liệu.

#include <iostream> using namespace std; template <typename T> class Array { private: T* ptr; int size; public: Array(T arr[], int s); void print(); }; template <typename T> Array<T>::Array(T arr[], int s) { ptr = new T[s]; size = s; for (int i = 0; i < size; i++) ptr[i] = arr[i]; } template <typename T> void Array<T>::print() { for (int i = 0; i < size; i++) cout << ” ” << *(ptr + i); cout << endl; } int main() { int arr[5] = { 1, 2, 3, 4, 5 }; Array<int> a(arr, 5); a.print(); return 0; }

Output:

Sorted array : 10 20 30 40 50

III. Truyền Nhiều Đối Số Tới Template Trong C++

Giống như các tham số bình thường, bạn có thể truyền nhiều kiểu dữ liệu làm đối số cho các mẫu. Dưới đây là một số ví dụ:

#include <iostream> using namespace std; template <class T, class U> class A { T x; U y; public: A() { cout << “Constructor Called” << endl; } }; int main() { A<char, char> a; A<int, double> b; return 0; }

Output:

1 2 3 4 5

Related Posts

Lưu ngay Top cách xóa lịch sử trên máy tính vĩnh viễn hàng đầu 2023

Dưới đây là những chia sẻ chi tiết của chúng tôi về cách xóa lịch sử trên máy tính vĩnh viễn được cập nhật mới nhất? Hãy tham khảo ngay những thông tin mà chúng tôi chia sẻ dưới đây, nếu thấy hay hãy chia sẻ bài viết này nhé!

Mẹo hay Top pin 4000mah sạc bao lâu thì đầy hot nhất hiện nay 2023

Trong bài viết này, chúng tôi chia sẻ một số thông tin về pin 4000mah sạc bao lâu thì đầy được cập nhật mới nhất? Hãy tham khảo ngay những thông tin mà chúng tôi chia sẻ dưới đây, nếu thấy hay hãy chia sẻ bài viết này nhé!

Mẹo hay Top cách bật cảm biến con quay hàng đầu 2023

Để hiểu hơn về cách bật cảm biến con quay được cập nhật mới nhất? Hãy tham khảo ngay những thông tin mà chúng tôi chia sẻ dưới đây, nếu thấy hay hãy chia sẻ bài viết này nhé!

Mẹo hay Top các trường đại học ở daegu hàng đầu 2023

Hãy cùng Nhà Xinh tìm hiểu rõ hơn về các trường đại học ở daegu được cập nhật mới nhất? Hãy tham khảo ngay những thông tin mà chúng tôi chia sẻ dưới đây, nếu thấy hay hãy chia sẻ bài viết này nhé!

Tổng hợp Top cách chăm sóc gà choi con mới nở [Hot Nhất 2023]

Dưới đây là những chia sẻ chi tiết của chúng tôi về cách chăm sóc gà choi con mới nở được viết khách quan và đầy đủ nhất, bạn hãy tham khảo ngay thông tin dưới đây của chúng tôi, nếu thấy hay hãy chia sẻ bài viết này nhé!

Tổng hợp Top cách làm video có chữ chạy trên điện thoại hàng đầu 2023

Dưới đây là những chia sẻ chi tiết của chúng tôi về cách làm video có chữ chạy trên điện thoại được cập nhật mới nhất? Hãy tham khảo ngay những thông tin mà chúng tôi chia sẻ dưới đây, nếu thấy hay hãy chia sẻ bài viết này nhé!