λ€μ€ μμ μμ½
κ°μ κΈ°μ΄ ν΄λμ€λ€μ μ¬μ©νμ§ μλ λ€μ€ μμ 볡μ΅
νμ ν΄λμ€κ° μλ‘ λ€λ₯Έ κΈ°μ΄ ν΄λμ€λ‘λΆν° μ΄λ¦μ΄ κ°μ λ λ©€λ²λ₯Ό μμνλ€λ©΄, λ λ©€λ²λ₯Ό ꡬλΆνκΈ° μν΄ κ·Έ νμ ν΄λμ€μμ ν΄λμ€ μ νμλ₯Ό μ¬μ©ν νμκ° μλ€.
κ°μ κΈ°μ΄ ν΄λμ€λ€μ μ¬μ©νλ λ€μ€ μμμ λν΄ μ΄ν΄λ³΄μ. νμ ν΄λμ€κ° νμμ λνλΌ λ ν€μλ virtualμ μ¬μ©νλ€λ©΄, κ·Έκ²μ κΈ°μ΄ ν΄λμ€λ κ°μ κΈ°μ΄ ν΄λμ€κ° λλ€.
class marketing : public virtual reality {...};
νλμ κ°μ κΈ°μ΄ ν΄λμ€μ μ¬λ¬ μΈμ€ν΄μ€λ‘λΆν° μμλλ ν΄λμ€λ, λ¨ νλμ κΈ°μ΄ ν΄λμ€ κ°μ²΄λ§ μμνλ€.
- κ°μ μ μΈ κ°μ κΈ°μ΄ ν΄λμ€λ₯Ό μ¬μ©νλ νμ ν΄λμ€λ, κ·Έ νμ ν΄λμ€μ μμ±μλ€μ΄ κ°μ μ μΈ κ°μ κΈ°μ΄ ν΄λμ€ μμ±μλ€μ μ§μ νΈμΆνκ² ν΄μΌ νλ€.
- μ΄λ¦μ λͺ¨νΈν¨μ λΉκ΅ μ°μ κ·μΉμ ν΅ν΄ ν΄κ²°λλ€.
ν΄λμ€ ν νλ¦Ώ
c++μ ν΄λμ€ ν νλ¦Ώμ ν¬κ΄μ μΈ ν΄λμ€ μ μΈμ μμ±νλ μ’ λ λμ λ°©λ²μ μ 곡νλ€. ν νλ¦Ώμ λ§€κ° λ³μνλλ λ°μ΄ν°νμ μ 곡νλ€. μ¦, ν νλ¦Ώμ ν΄λμ€λ ν¨μ μ€κ³λμ λ°μ΄ν°ν μ΄λ¦μ 맀κ°λ³μλ‘ λκ²¨μ€ μ μλ€.
ν΄λμ€ ν νλ¦Ώ μ μ
ν νλ¦Ώ ν¨μμ λ§μ°¬κ°μ§λ‘, ν νλ¦Ώ ν΄λμ€λ λ€μκ³Ό κ°μ νμμ μ½λλ₯Ό μμΈμ΄λ€.
template <class Type>
ν€μλ classλ λ°μ΄ν°νμ κ°μΌλ‘ λ°μλ€μ΄λ μ΄λ€ λ³μμ λ°μ΄ν°ν μ΄λ¦μ μν μ νκ³ , Typeμ κ·Έ λ³μμ μ΄λ¦μ λνλΈλ€κ³ μκ°ν μ μλ€. (classλ Typeμ΄ λ°λμ ν΄λμ€μ¬μΌ νλ€λ κ²μ΄ μλλ€.)
class λμ ν€μλ typenameμ μ¬μ©ν μ μλ€.
template<typename Type>
Type μμΉμ μ¬μ©μκ° μνλ ν¬κ΄μ μΈ λ°μ΄ν°ν μ΄λ¦μ μ¬μ©ν μ μλ€. ν νλ¦Ώμ΄ νΈμΆλμμ λ, Typeμ intλ stringκ³Ό κ°μ ꡬ체μ μΈ λ°μ΄ν°νμΌλ‘ λ체λλ€. ν νλ¦Ώ μ μ μμμλ μ€νμ μ μ₯ν λ°μ΄ν°νμ ν¬κ΄μ μΈ λ°μ΄ν°ν μ΄λ¦μ μ¬μ©ν μ μλ€.
κ°μ λ°©λ²μΌλ‘, μ€λ¦¬μ§λ ν΄λμ€μ ν΄λμ€ λ©μλλ€μ ν νλ¦Ώ λ©€λ² ν¨μλ‘ λ체 κ°λ₯νλ€. κ°κ°μ ν¨μ 머리μ λμΌν ν νλ¦Ώ νμλ₯Ό μμΈμ΄λ€. template<class Type>
λ§μ°¬κ°μ§λ‘ ν¬κ΄μ μΈ λ°μ΄ν°ν μ΄λ¦ Typeλ‘ λμ²΄κ° νμ. ν΄λμ€ μ νμλ₯Ό Stack:: λμ Stack<Type>::μΌλ‘ λ³κ²½ν΄μΌ ν¨.
ν΄λμ€ μ μΈ μμμ λ©μλλ₯Ό μ μνλ€λ©΄, ν νλ¦Ώ μ νμμ ν΄λμ€ μ νμλ₯Ό μλ΅ν μ μλ€.
ν νλ¦Ώλ€μ ν¨μκ° μλκΈ° λλ¬Έμ κ°λ³μ μΌλ‘ μ»΄νμΌν μ μλ€.
ν νλ¦Ώ ν΄λμ€ μ¬μ©
ꡬ체νλ₯Ό μμ²νλ €λ©΄, ν νλ¦Ώ ν΄λμ€νμ κ°μ²΄λ₯Ό μ μΈνλ, ν¬κ΄μ μΈ λ°μ΄ν°ν μ΄λ¦μ ꡬ체μ μΈ λ°μ΄ν°νμΌλ‘ λ체ν΄μΌ νλ€.
Stack<int> kernels; //int κ°λ€μ μ€νμ μμ±νλ€.
Stack<string> colonels; //string κ°μ²΄λ€μ μ€ν μμ±.
λͺ¨λ λ°μ΄ν°νμ λν΄ μΌκ΄λ μκ³ λ¦¬μ¦μ μ¬μ©ν΄μΌ νλ€. μλ₯Ό λ€μ΄, μ€ν ν΄λμ€λ νλμ νλͺ©μ λ€λ₯Έ νλͺ©μ λμ ν μ μλ€κ³ κ°μ , μ΄ κ°μ μ κΈ°λ³Έ λ°μ΄ν°ν, ꡬ쑰체, ν΄λμ€μ λν΄μλ μ ν©νμ§λ§, λ°°μ΄μ λν΄μλ μ ν©νμ§ μλ€.
ν νλ¦Ώ ν΄λμ€ μμΈν λ€μ¬λ€λ³΄κΈ°
-ν¬μΈν°λ€μ μ€νμ μλͺ» μ¬μ©νλ κ²½μ°
Stack<char *> st;
- char * po; ν¬μΈν°μ λ¨μν μμ±μ μ λ ₯ λ¬Έμμ΄λ€μ μ μ₯ 곡κ°μ μμ±νμ§ μκΈ° λλ¬Έμ, μ€ν¨νλ€
- char po[40]; λ°°μ΄μ pop() λ©μλμμ μ½μν κ°μ κ³Ό λΆνλ₯Ό μΌμΌν¨λ€.
template<class Type>
bool Stack<Type>::pop(Type &item)
{
if(top>0)
{
item=items[--top];
return true;
}
else
return false;
}
3. char * po = new char[40];
poλ³μλ νλλ§ μ‘΄μ¬νκ³ , νμ κ°μ λ©λͺ¨λ¦¬ μμΉλ₯Ό μ§μνλ€. κ·Έ λ©λͺ¨λ¦¬μ λ΄μ©μ μλ‘μ΄ λ¬Έμμ΄μ μ½μ λλ§λ€ λ°λλ€. κ·Έλ¬λ νΈμ μ°μ°μ λ§€λ² μ νν λμΌν μ£Όμλ₯Ό μ€νμ λ£λλ€. κ·Έλμ μ€νμ ν νλ©΄, νμ λμΌν μ£Όμλ₯Ό μ»λλ€. κ·Έλ¦¬κ³ λ©λͺ¨λ¦¬μ λ§μ§λ§μΌλ‘ μ½μ΄ λ€μΈ λ¬Έμμ΄μ νμ μ°Έμ‘°νλ€. κ·Έμ κ°μ μ€νμ μ λ¬Έμμ΄μΌ λ€μ΄μ¬ λλ§λ€ μ μ₯νμ§ μμΌλ―λ‘ μ μ©ν μ©λλ‘ μ¬μ© λΆκ°.
-ν¬μΈν°λ€μ μ€νμ λ°λ₯΄κ² μ¬μ©νλ κ²½μ°
ν¬μΈν°λ€μ μ€νμ μ¬μ©νλ ν κ°μ§ λ°©λ²μ, νΈμΆν νλ‘κ·Έλ¨μ΄ ν¬μΈν°λ€μ λ°°μ΄μ μ 곡νλ κ²μ΄λ€.
Stackμ Stack<Type>μ μ½μ νκΈ°μ΄κ³ , κ·Έ ν΄λμ€ μ¬μ©λ²μ μμμλ§ μ¬μ©ν μ μλ€. μ¦, ν νλ¦Ώ μ μΈμ λ΄λΆμ ν νλ¦Ώ ν¨μ μ μμ λ΄λΆμμ Stackμ μ¬μ©ν μ μλ€. κ·Έλ¬λ 리ν΄νμ μΈμν λμ μ¬μ© λ²μ κ²°μ μ°μ°μλ₯Ό μ¬μ©ν λμ κ°μ΄, κ·Έ ν΄λμ€ λ°κΉ₯μμλ μμ ν νμμΈ Stack<Type>μ μ¬μ©ν΄μΌ νλ€.
template <class T, int n>
λ λ²μ§Έ μ’ λ₯μ 맀κ°λ³μλ₯Ό λ°μ΄ν°νμ΄ μλ 맀κ°λ³μ λλ μμ 맀κ°λ³μλΌκ³ νλ€. μμ 맀κ°λ³μλ λͺ κ°μ§ μ μ½μ΄ λ°λ₯Έλ€. μ μν, μ΄κ±°ν, μ°Έμ‘°, ν¬μΈν°κ° μμ 맀κ°λ³μκ° λ μ μλ€. κ·Έλμ double mμ νμ©λμ§ μμ§λ§, double &rmμ΄λ double *pmμ μμ 맀κ°λ³μλ‘ νμ©λλ€. λν κ·Έ ν νλ¦Ώ μ½λλ μμ 맀κ°λ³μμ κ°μ λ³κ²½νκ±°λ κ·Έκ²μ μ£Όμλ₯Ό μ»μ μ μλ€. ν νλ¦Ώμ ꡬ체νν λ, μμ 맀κ°λ³μμ μ¬μ©λλ κ°μ μμ μμ μ΄μ΄μΌ νλ€.
ν νλ¦Ώμ μ΅ν΅μ±
보ν΅μ ν΄λμ€μ μ μ©νλ κ²κ³Ό λμΌν ν ν¬λλ€μ ν νλ¦Ώ ν΄λμ€μ μ μ©ν μ μλ€. ν νλ¦Ώ ν΄λμ€λ κΈ°μ΄ ν΄λμ€μ μν μ ν μ μλ€. λν μ±λΆ ν΄λμ€κ° λ μλ μλ€. λ€λ₯Έ ν νλ¦Ώλ€μ λ°μ΄ν°ν 맀κ°λ³μκ° λ μ μλ€.
ν νλ¦Ώμ μ¬κ·μ μ¬μ©
ν νλ¦Ώμ μ¬κ·μ μΌλ‘ μ¬μ©ν μ μλ€λ κ²μ΄, ν νλ¦Ώμ μ΅ν΅μ±μ 보μ¬μ£Όλ λ νλμ μμ΄λ€.
ArrayTP<ArrayTP<int,5>,10>twodee;
보ν΅μ λ°°μ΄μ μ¬μ©νλ, λλ±ν μ μΈμ λ€μκ³Ό κ°λ€.
int twodee[10][5];
ν΄λμ€ ν νλ¦Ώ λν΄νΈ λ°μ΄ν°ν 맀κ°λ³μ
template<class T1, class T2 = int> class Topo{...};
ν΄λμ€ ν νλ¦Ώ λ°μ΄ν°ν 맀κ°λ³μμλ λν΄νΈ κ°μ μ 곡ν μ μμ§λ§, ν¨μ ν νλ¦Ώ 맀κ°λ³μμλ λν΄νΈ κ°μ μ 곡ν μ μλ€. ν΄λμ€ ν νλ¦Ώκ³Ό ν¨μ ν νλ¦Ώ λͺ¨λ, λ°μ΄ν°νμ΄ μλ 맀κ°λ³μμ λν΄μλ λν΄νΈ κ°μ μ 곡ν μ μλ€.