Chuyển đến nội dung chính

Tem

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

 

 

 

 

The post Tem first appeared on Techacademy.



source https://techacademy.edu.vn/tem/

Nhận xét

Bài đăng phổ biến từ blog này

Đề Thi HSG Tin Học Lớp 9 Tỉnh Hải Phòng Năm 2024 – 2025

Rate this post Dưới đây là Đề Thi HSG Tin Học Lớp 9 Tỉnh Hải Phòng Năm 2024 – 2025 Dưới đây là danh sách toàn bộ đề thi học HSG – Chuyên Tin trên toàn quốc do Techacademy tổng hợp và sưu tầm từ các nguồn tham khảo Tổng hợp đề thi chuyên tin   Tổng hợp đề thi HSG tin học lớp 9   Tổng hợp đề thi HSG tin học lớp 12 Ngoài ra, Techacademy đã biên soạn và sưu tầm các đề thi, lời giải, chi tiết, phụ huynh và học viên muốn đăng kí mua tài liệu tham khảo có thể liên hệ Techacademy. +  Đăng Ký Mua Tài Liệu Luyện Thi Chuyên Tin +  Đăng Ký Mua Tài Liệu Luyện Thi THPT +  Đăng Ký Mua Tài Liệu Luyện Thi HSG Tin Học Tham gia group zalo để chia sẻ tài liệu:  https://zalo.me/g/wlonvi793  The post Đề Thi HSG Tin Học Lớp 9 Tỉnh Hải Phòng Năm 2024 – 2025 first appeared on Techacademy .

Đề Thi HSG Tin Học Lớp 12 Tỉnh Lào Cai Năm 2025

Rate this post Dưới đây là Đề Thi HSG Tin Học Lớp 12 Tỉnh Lào Cai Năm 2025 Bạn đọc có thể share lời giải bên dưới comment bài viết. Tham khảo: TỔNG HỢP ĐỀ THI CHUYÊN TIN TẤT CẢ CÁC TRƯỜNG TRÊN TOÀN QUỐC TỔNG HỢP ĐỀ THI HỌC SINH GIỎI TIN HỌC LỚP 9 TOÀN QUỐC TỔNG HỢP ĐỀ THI HỌC SINH GIỎI TIN HỌC LỚP 12 TOÀN QUỐC KHÓA HỌC LẬP TRÌNH C++ KHÓA HỌC LẬP TRÌNH PYTHON  The post Đề Thi HSG Tin Học Lớp 12 Tỉnh Lào Cai Năm 2025 first appeared on Techacademy .

How to Choose Term Paper Writing Service

When looking to employ term paper writers to you contador de palabras ingles r writing job on the internet there are certainly some important variables to check before employing them. As many have seen around the planet, an contador de palabras twitter effective author ought to have the ability to combine technical knowledge and outstanding writing ability with the right methodology and application. It is no good, using a writer who can only produce a well researched and concisely written composition. There are several points which should always be kept in mind before deciding on any writer. An individual must bear in mind that a writer is just as good as their past performance. Thus, assess their academic writing documents and also take a look at their freelance job portfolio. Assess how many times they’ve been cited or acknowledged for their excellent academic writing aid. Writers for academic and term papers all specialize in a specific area of academic essay writing solutions. ...