본문 바로가기

NC University/Advanced C++34

5일차 - begin & end Intro 임의의 타입 T의 객체들을 원소로 가지는 vector가 주어졌을 때, 이를 순회하면서 element들을 출력하는 함수를 작성해보자. 아마도 다음과 유사한 코드가 나올 것이다. #include #include using namespace std; template void Show (vector& v) { auto p = v.begin(); while (p != v.end()) { cout 2015. 8. 10.
5일차 - initializer_list Intro initializer_list는 동일 타입의 요소를 여러 개 보관하는 타입(정확히는 템플릿)이다. 언뜻 생각해보면 이는 vector와 유사하며, interface도 큰 차이를 보이지 않는다. 차이점은 차후에 살펴보기로 하고, 우선 아래 코드를 통해 int 타입을 저장하는 initializer_list를 생성하고 사용하는 것을 살펴보자. #include using namespace std; int main(int argc, char* argv[]) { initializer_list e = { 1,2,3,4,5 }; cout 2015. 8. 5.
4일차 - 객체의 field 초기화 (field initializer) field initializer 예전 C++ 98에서는 유일하게 클래스 안에서 필드를 초기화가 가능했던 문법은 static const 뿐이었다. 하지만 C++ 11부터는 이러한 제약이 사라졌기 때문에 아래와 같은 필드 초기화가 가능해졌다. #include using namespace std; class A { int n{ 0 }; //< C++ 11부터 OK.field initializer 문법 (1) public: static const int c = 10;//< C++98에서도 문제 없음. A(int x = 0) : n(10) //< (2) { n = 20; //< (3) } }; int main(int argc, char* argv[]) { A aa(10); cout 2015. 8. 4.
4일차 - 일관된 초기화 (uniform initialization) 기존의 객체 초기화 아래 코드는 기존 C++에서 여러 타입의 객체들을 초기화하는 코드이다. #include #include using namespace std; struct Point { int x, y; }; int main(int argc, char* argv[]) { int n1 = 0; int n2(0); int x[10] = { 1,2,3,4,5,6,7,8,9,10 }; Point p = { 1, 1 }; complex c(1,2); return 0; } uniform initialization 모든 종류의 객체를 동일한 방식으로 초기화하자는 컨셉. 위의 코드와 비교해보자. int n1{ 0 }; int n2{ 0 }; int x[10]{ 1,2,3,4,5,6,7,8,9,10 }; Point p.. 2015. 8. 4.