바로 질문으로 시작하자. 1. 다음 코드가 정상적으로 작동 하는가? 그렇다면, 어떻게 개선 할 수 있는가? char *p = &v[ 0 ]; 정상적으로 작동한다. 약간 위험해 보이는 코드이기 때문에, iterator를 이용해서 사용 하는 편이 더 안전하다고 생각 될 수 있다. 하지만 .. iterator 쓰기가 부담스러울 때가 있는데, 그때 포인터를 사용 할 수 있겠다. 여기서 왜 iterator가 더 안전하냐하면, 확인과정을 거치면서 이동할 수 있기 때문이다. 그리고 뭐가 더 좋고 뭐가 더 좋다는 말은 못하겠다. 때에 따라서 좋은게 좋은거로 되기 때문이다. 2. 다음 코드는 유효한가? 설명하라. template void f( T& t ) { typename T::value_type *p1 = &t[0]..
책 정리/More Exceptional C++ 검색 결과
이번 항목은 typename 에 대해서다, 그냥 알고만 있어도 바로 써먹을 수 있으니, 빠르게 정리하고 넘어가도록 한다. 1. typename의 역활은 무엇인가? ① typename은 템플릿 매개변수의 이름을 정할 때, 사용 된다. ② typename은 템플릿 매개변수로 인한 의존적인 타입을 타입으로 사용할 때, 사용 된다. ① 은 쉽게 이해 하겠지만, ②은 가물 가물 할것이다. 질문 2에서 예제와 함게 설명 한다. 2. 아래 코드의 문제점은 무엇인가? template class X_base { public: typedef T instantaited_type; }; template class X : public X_base { public: bool operator() ( const instantaite..
어떤 기능,역활, 상태를 클래스에 부여하기 위해서, 상속이나 특성 클래스를 사용 한다. 이러한 클래스들에 제약을 두어서, 원하는 클래스만이 사용될 수 있게 하는 기술에 대한 이야기가 바로 항목 4이다. 이야기를 하기 위해서 5가지의 질문에 답해보고 생각해 보기 바란다고, 책에선 설명하고 있다. 1. 특성 클래스(traits class)의 정의는? C++98 17.1.18에서, 클래스 템플릿과 함수 템플릿이 받아들이는 타입을 조작하기 위해, 필요한 타입과 함수의 집합을 포함하는 클래스라고 규정했다. 예를 들면, iterator_traits 도 있고, not1에 넣을때 .. 몇몇 특성 클래스도 있고. 잘 사용하지 않아서 예는 잘 못들겠네; 2. 아래 클래스 템플릿이 있다. 템플릿 매개변수가 T* Clone(..
바로 질문으로 들어가자. 1. 판단자(predicate)를 정의하고, STL에서 사용 되는 방법을 예를 들어 설명하라. 판단자(predicate)는 bool 형을 반환하는 함수 오브젝트를 말한다. 예제 코드 #include #include // 판단자(술어구문 클래스) class Predicate { public: bool operator()( int val ) { return val > 1; } }; int main( void ) { std::vector testvector; testvector.push_back( 1 ); testvector.push_back( 1 ); testvector.push_back( 2 ); testvector.push_back( 2 ); testvector.push_back..
판단자라 불리는 이것은 predicate 를 말하는 것이다. 이 predicate 는 저번에도 언급했드시 술어 구문 함수 오브젝트로 쉽게 생각해 클래스(구조체)의 bool operator()( T ) 을 정의하여, 함수 오브젝트로 사용 하는 객체를 가리킨다. 자세한 내용은 http://ikpil.com/608 을 참고. 1. std::remove() 알고리즘이 하는 일을 구체적으로 설명 하라. 참조 : http://ikpil.com/598 2. std::vector에서 3의 값을 갖는 모든 요소를 지우는 코드를 작성 하라. #include #include int main( void ) { std::vector abcdefg; for( int iii = 0; iii < 10000; ++iii ) { abc..
사실 이 항목이 왜 존재 하는지 모르겠다. "왜" 란 느낌이 팍 들게 만들었던 질문과 예제코드를 보자. 첫번째 질문, std::cin과 std::cout 은 무슨 타입인가? 코드로 보는게 더 편하니, 코드 첨부 // char TYPEDEFS typedef basic_ios ios; typedef basic_streambuf streambuf; typedef basic_istream istream; typedef basic_ostream ostream; typedef basic_iostream iostream; typedef basic_stringbuf stringbuf; typedef basic_istringstream istringstream; typedef basic_ostringstream ostr..
최근댓글