int compare(string& v1, string& v2){ if (v1 기능적으로 같지만 타입이 다르기 때문에 이렇게 세개의 함수를 만들어주고 있습니다. 정수는 정수, 실수는 실수, 문자열은 문자열 이런식으로 되어 있는데요. 논리적으로는 완전히 똑같은데 데이터의 타입이 다르기 때문에 이렇게 해주는 것입니다. 이것은 똑같은 로직인데 데이터의 타입이 다르다는 이유만으로 똑같은 함수 여러개를 만들어야 한다는 것은 조금 짜증나는 일입니다. 그래서 c++은 template를 제공하는데요. Templatetemplate int compare(T& v1, T& v2){ if (v1 template는 실제 객체가 아니라 실제 객체의 틀이라고 보면 됩니다. 붕어빵이 있을 때 붕어빵을 만드는 틀이라고 생각하시면 ..