HOME / ¹®¼°øÀ¯ / ¸®Æ÷Æ®/³í¹® / ±âŸ¸®Æ÷Æ®
0
0°ÇÀÇ Èı⺸±âÇÁ·Î±×·¥ ¾ð¾î C++(ÅÛÇø´°ú Ç¥ÁØ ÅÛÇø´ ¶óÀ̺귯¸®)¿¡ ´ëÇØ ±â¼úÇÑ ¸®Æ÷Æ® Âü°íÀÚ·áÀÔ´Ï´Ù.
ÅÛÇø´°ú Ç¥ÁØ ÅÛÇø´ ¶óÀ̺귯¸®(stl) * ¸íÇ° c ÇÔ¼ö Áߺ¹ÀÇ ¾àÁ¡-Áߺ¹ ÇÔ¼öÀÇ ÄÚµå Áߺ¹ * #include <iostream> using namespace std; void myswap(int& a, int& b) { int tmp; tmp a; a b; b tmp; } void myswap(double & a, double & b) { double tmp; tmp a; a b; b tmp; } int main() { int a4, b5; myswap(a, b); // myswap(int& a, int& b) È£Ãâ
cout << a << \t << b << endl;
double c0.3, d12.5;
myswap(c, d); // myswap(double& a, double& b) È£Ãâ
cout << c << \t << d << endl;
}
ÇÔ¼öÀÇ ¸Å°³ º¯¼ö¸¸ ´Ù¸£°í ³ª¸ÓÁö ÄÚµå´Â µ¿ÀÏÇÔ
µ¿ÀÏÇÑ ÄÚµå Áߺ¹ ÀÛ¼º 5 4
xxxx. xx
xx. 3 ÀϹÝÈ¿Í ÅÛÇø´ Á¦³×¸¯(generic) ¶Ç´Â ÀϹÝÈ
ÇÔ¼ö³ª Ŭ·¡½º¸¦ ÀϹÝȽÃÅ°°í, ¸Å°³ º¯¼ö ŸÀÔÀ» ÁöÁ¤ÇÏ¿© Ʋ¿¡¼ Âï¾î ³»µíÀÌ ÇÔ¼ö³ª Ŭ·¡½º Äڵ带 »ý»êÇÏ´Â ±â¹ý
ÅÛÇø´ ÇÔ¼ö³ª Ŭ·¡½º¸¦ ÀϹÝÈÇÏ´Â c µµ±¸ template Å°¿öµå·Î ÇÔ¼ö³ª Ŭ·¡½º ¼±¾ð
º¯¼ö³ª ¸Å°³ º¯¼öÀÇ Å¸ÀÔ¸¸ ´Ù¸£°í, ÄÚµå ºÎºÐÀÌ µ¿ÀÏÇÑ ÇÔ¼ö¸¦ ÀϹÝȽÃÅ´
Á¦³×¸¯ ŸÀÔ-ÀϹÝȸ¦ À§ÇÑ µ¥ÀÌŸ ŸÀÔ ÅÛÇø´ ¼±¾ð * template <class t> void myswap (t & a, t & b) { t tmp; tmp a; a b; b tmp; } ÅÛÇø´À» ÀÌ¿ëÇÑ Á¦³×¸¯ ÇÔ¼ö myswap ÅÛÇø´À» ¼±¾ðÇÏ´Â Å°¿öµå Á¦³×¸¯ ŸÀÔÀ» ¼±¾ðÇÏ´Â Å°¿öµå Á¦³×¸¯ ŸÀÔ t ¼±¾ð template <class t> ¶Ç´Â template <typename t> 3 °³ÀÇ Á¦³×¸¯ ŸÀÔÀ» °¡Áø ÅÛÇø´ ¼±¾ð template <class t1, class t2, class t3> Áߺ¹ ÇÔ¼öµé·ÎºÎÅÍ ÅÛÇø´ ¸¸µé±â »ç·Ê * void myswap (double & a, double & b) { double tmp; tmp a; a b; b tmp; } void myswap(int & a, int & b) { int tmp; tmp a; a b; b tmp; } template <class t> void myswap (t & a, t & b) { t tmp; tmp a; a b; b tmp; } ÅÛÇø´À» ÀÌ¿ëÇÑ Á¦³×¸¯ ÇÔ¼ö Áߺ¹ ÇÔ¼öµé Á¦³×¸¯ ÇÔ¼ö ¸¸µé±â(ÀϹÝÈ) ÅÛÇø´À» ¼±¾ðÇÏ´Â Å°¿öµå Á¦³×¸¯ ŸÀÔÀ» ¼±¾ðÇÏ´Â Å°¿öµå Á¦³×¸¯ ŸÀÔ t ¼±¾ð ÅÛÇø´À¸·ÎºÎÅÍÀÇ ±¸Ã¼È ±¸Ã¼È(specialization) ÅÛÇø´ÀÇ Á¦³×¸¯ ŸÀÔ¿¡ ±¸Ã¼ÀûÀΠŸÀÔ ÁöÁ¤
ÅÛÇø´ ÇÔ¼ö·ÎºÎÅÍ ±¸Ã¼ÈµÈ ÇÔ¼öÀÇ ¼Ò½º ÄÚµå »ý¼º
* template <class t> void myswap(t & a, t & b) { t tmp; tmp a; a b; b tmp; } int main() { int a4, b5; myswap(a, b); } void myswap(int & a, int & b) { int tmp; tmp a; a b; b tmp; } int main() { int a4, b5; myswap(a, b); } ±¸Ã¼È ÄÄÆÄÀÏ ÈÄ ½ÇÇà t¿¡ int¸¦ ´ëÀÔÇÏ¿© ±¸Ã¼ÈµÈ ¼Ò½º ÄÚµå »ý¼º myswap(a, b) È£Ãâ¿¡ ÇÊ¿äÇÑ ÇÔ¼ö ±¸Ã¼È È£Ãâ Á¦³×¸¯ ÇÔ¼ö·ÎºÎÅÍ ±¸Ã¼ÈµÈ ÇÔ¼ö »ý¼º »ç·Ê * template <class t> void myswap(t & a, t & b) { t tmp; tmp a; a b; b tmp; } t-> int int a4, b5; myswap(a, b);
double c0.3, d12.5;
myswap(c, d); t->double void myswap(int & a, int & b) { int tmp; tmp a; a b; b tmp; } void myswap(double & a, double & b) { double tmp; tmp a; a b; b tmp; } char e¡®a¡¯, f¡®k¡¯; myswap(e, f); void myswap(char & a, char & b) { char tmp; tmp a; a b; b tmp; } t-> char Á¦³×¸¯ ÇÔ¼ö ±¸Ã¼ÈµÈ ¹öÀüÀÇ c ¼Ò½º »ý¼º ±¸Ã¼È ¿¹Á¦ xxx-xxx Á¦³×¸¯ myswap() ÇÔ¼ö ¸¸µé±â * #include <iostream> using namespace std; class circle { int radius; public:
circle(int radius1) { this->radius radius; }
int getradius() { return radius; } }; template <class t> void myswap(t & a, t & b) { t tmp; tmp a; a b; b tmp; } int main() { int a4, b5; myswap(a, b);
cout << a << a << , << b << b << endl;
double c0.3, d12.5;
myswap(c, d);
cout << c << c << , << d << d << endl;
circle donut(5), pizza(20); myswap(donut, pizza);
cout << donut¹ÝÁö¸§ << donut.getradius() << , ;
cout << pizza¹ÝÁö¸§ << pizza.getradius()<< endl;
} myswap(int& a, int& b) ÇÔ¼ö ±¸Ã¼È ¹× È£Ãâ myswap(double& a, double& b) ÇÔ¼ö ±¸Ã¼È ¹× È£Ãâ myswap(circle& a, circle& b) ÇÔ¼ö ±¸Ã¼È ¹× È£Ãâ a5, b4 (ÀÌÇÏ »ý·«)
¹ÞÀº º°Á¡
0/5
0°³ÀÇ º°Á¡
¹®¼°øÀ¯ ÀڷḦ µî·ÏÇØ ÁÖ¼¼¿ä.
¹®¼°øÀ¯ Æ÷ÀÎÆ®¿Í Çö±ÝÀ» µå¸³´Ï´Ù.
Æ÷ÀÎÆ® : ÀÚ·á 1°Ç´ç ÃÖ´ë 5,000P Áö±Þ
Çö±Ý : ÀÚ·á 1°Ç´ç ÃÖ´ë 2,000¿ø Áö±Þ