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.



Nhận xét

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

Vẽ Tam Giác Trong C++

Vẽ tam giác trong C++ là một trong những bài tập lập trình về C++ sử dụng vòng lặp khá hay giúp các bạn luyện tư duy code cũng như cách sử dụng vòng lặp. Dưới đây là một số lời giải các bài tập vẽ tam giác trong C++ I. Vẽ Tam Giác Cân Trong C++ Viết chương trình C++ sử dụng ký tự * để vẽ tam giác vuông cân trong C++.Chúng ta sử dụng hai vòng lặp lồng nhau để giải bài toán này. Lời Giải: #include <stdio.h> #include <stdlib.h> int main() { int n; int q = 0; printf("Chuong trinh nay se in ra tam giac can\n"); printf("Nhap chieu cao tam giac cua ban: \n"); scanf("%d",&n); while (n > 0) { for (int i = 1; i<n; i++) printf("%c", ' '); for (int k = 0; k <= q; k ++) printf("%c", '*'); n -- ; q += 2 ; printf("\n"); } return 0; } II. Vẽ Hình Tam Giác Trong C++ Viết một chương trình in ra hình

Nên học C hay C++ ? Lựa chọn nào tốt hơn

Bạn đang mới học lập trình và đang phân vân nên học lập trình C hay C++ , bài viết dưới đây của Tehcacademy.edu.vn sẽ phần nào giải đáp cho bạn thắc mắc trên.  I. Nên học ngôn ngữ lập trình C hay C++ Nếu bạn đang phân vẫn lựa chọn nên học C hay C++ thì dưới đây là một số ưu điểm và nhược điểm của ngôn ngữ lập trình C và C++. Dựa trên đánh giá này, giúp bạn lựa chọn nên học lập trình C hay C++ 1, Ưu điểm và nhược điểm của ngôn ngữ lập trình C, C++ Dưới đây là một số ưu điểm, nhược điểm của ngôn ngữ c và c++: C, C++ đều có những ưu điểm và nhược điểm riêng + Ngôn ngữ lập trình C Ưu điểm : + Hiệu suất cao Mỗi một ngôn ngữ đều dựa vào khả năng sử dụng bộ nhớ để đánh giá hiệu suất. Đây chính là ưu điểm đầu tiên của C, nó có thể chạy mượt mà trên những hệ thống giới hạn về dung lượng, lý do là vì ngay từ đầu C được thiết kế với mục đích thay thế ASM trong các hệ thống bộ nhớ cực hạn chế thập niên 1960. + Tính linh hoạt Lập trình C có 2 tính linh hoạt và là 2 ưu điểm nổi bật củ

Tìm Phần Tử Xuất Hiện Nhiều Nhất Trong Mảng C++

Tìm phần tử xuất hiện nhiều nhất trong mảng là một vấn đề phổ biến trong lập trình C++. Để giải quyết vấn đề này, bạn có thể sử dụng một số phương pháp khác nhau như sử dụng bảng băm (hash table), sắp xếp mảng và duyệt qua mảng. Cùng techacademy đi tìm hiểu chi tiết chủ đề này ngay bài viết bên dưới đây nhé. I. Tìm Phần Tử Xuất Hiện Nhiều Nhất Trong Mảng C++ Trong lập trình C++, việc tìm ra phần tử xuất hiện nhiều nhất trong một mảng là một vấn đề phổ biến và quan trọng. Điều này thường được thực hiện thông qua việc sử dụng các thuật toán và cấu trúc dữ liệu phù hợp. Chúng ta sẽ thảo luận về cách thực hiện điều này một cách hiệu quả trong ngôn ngữ lập trình C++. 1. Sử dụng Bảng Băm (Hash Map): Một cách phổ biến để giải quyết vấn đề này là sử dụng bảng băm. Chúng ta có thể duyệt qua mảng, đếm số lần xuất hiện của mỗi phần tử và lưu trữ chúng trong một bảng băm. 2. Sắp Xếp và Đếm: Một cách khác là sắp xếp mảng và sau đó duyệt qua mảng để đếm số lần xuất hiện của mỗi phần tử liên ti