Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

Template C++

Template adalah dasar dari pemrograman generik, yang melibatkan penulisan kode dengan cara yang tidak bergantung pada jenis tertentu.

Template adalah cetak biru atau formula untuk membuat kelas generik atau fungsi. Wadah perpustakaan seperti iterator dan algoritme adalah contoh pemrograman generik dan telah dikembangkan menggunakan konsep template.

Ada satu definisi untuk setiap wadah, seperti vektor , tetapi kita dapat mendefinisikan berbagai jenis vektor misalnya, vektor atau vektor .

Anda dapat menggunakan template untuk mendefinisikan fungsi serta kelas, mari kita lihat cara kerjanya −

Template Fungsi

Bentuk umum dari definisi fungsi template ditampilkan di sini −

template <class type> ret-type func-name(parameter list) {
   // body of function
} 

Di sini, tipe adalah nama placeholder untuk tipe data yang digunakan oleh fungsi. Nama ini dapat digunakan dalam definisi fungsi.

Berikut ini adalah contoh template fungsi yang mengembalikan maksimal dua nilai −

Demo Langsung
#include <iostream>
#include <string>

using namespace std;

template <typename T>
inline T const& Max (T const& a, T const& b) { 
   return a < b ? b:a; 
}

int main () {
   int i = 39;
   int j = 20;
   cout << "Max(i, j): " << Max(i, j) << endl; 

   double f1 = 13.5; 
   double f2 = 20.7; 
   cout << "Max(f1, f2): " << Max(f1, f2) << endl; 

   string s1 = "Hello"; 
   string s2 = "World"; 
   cout << "Max(s1, s2): " << Max(s1, s2) << endl; 

   return 0;
}

Jika kita mengkompilasi dan menjalankan kode di atas, ini akan menghasilkan hasil sebagai berikut

Max(i, j): 39
Max(f1, f2): 20.7
Max(s1, s2): World

Template Kelas

Sama seperti kita dapat mendefinisikan template fungsi, kita juga dapat mendefinisikan template kelas. Bentuk umum dari deklarasi kelas generik ditampilkan di sini −

template <class type> class class-name {
   .
   .
   .
}

Di sini, ketik adalah nama tipe placeholder, yang akan ditentukan ketika sebuah kelas dipakai. Anda dapat menentukan lebih dari satu tipe data umum dengan menggunakan daftar yang dipisahkan koma.

Berikut adalah contoh untuk mendefinisikan kelas Stack<> dan mengimplementasikan metode umum untuk mendorong dan mengeluarkan elemen dari tumpukan −

Demo Langsung
#include <iostream>
#include <vector>
#include <cstdlib>
#include <string>
#include <stdexcept>

using namespace std;

template <class T>
class Stack { 
   private: 
      vector<T> elems;    // elements 

   public: 
      void push(T const&);  // push element 
      void pop();               // pop element 
      T top() const;            // return top element 
      
      bool empty() const {      // return true if empty.
         return elems.empty(); 
      } 
}; 

template <class T>
void Stack<T>::push (T const& elem) { 
   // append copy of passed element 
   elems.push_back(elem);    
} 

template <class T>
void Stack<T>::pop () { 
   if (elems.empty()) { 
      throw out_of_range("Stack<>::pop(): empty stack"); 
   }
   
   // remove last element 
   elems.pop_back();         
} 

template <class T>
T Stack<T>::top () const { 
   if (elems.empty()) { 
      throw out_of_range("Stack<>::top(): empty stack"); 
   }
   
   // return copy of last element 
   return elems.back();      
} 

int main() { 
   try {
      Stack<int>         intStack;  // stack of ints 
      Stack<string> stringStack;    // stack of strings 

      // manipulate int stack 
      intStack.push(7); 
      cout << intStack.top() <<endl; 

      // manipulate string stack 
      stringStack.push("hello"); 
      cout << stringStack.top() << std::endl; 
      stringStack.pop(); 
      stringStack.pop(); 
   } catch (exception const& ex) { 
      cerr << "Exception: " << ex.what() <<endl; 
      return -1;
   } 
} 

Jika kita mengkompilasi dan menjalankan kode di atas, ini akan menghasilkan hasil sebagai berikut

7
hello
Exception: Stack<>::pop(): empty stack

Bahasa C

  1. Tipe Data C++
  2. Operator C++
  3. Komentar C++
  4. Konstruktor C++
  5. Ikhtisar C++
  6. Konstanta/Literal C++
  7. Operator di C++
  8. Angka dalam C++
  9. Referensi C++
  10. C++ Preprosesor