본문 바로가기

NC University/Advanced C++34

5일차 - 우측값 (R-value) Intro 우선 우측값(rvalue)와 좌측값(lvalue)의 정의부터 확인해보자. 좌측값: =의 왼쪽과 오른쪽에 모두 올수 있는것, 대부분 이름이 있음. ex) 변수, 참조를 리턴하는 함수 우측값: =의 오른쪽에만 올수 있는것, 대부분 이름이 없음. ex) 상수, 값을 리턴하는 함수 간단한 예제를 살펴보자.int x = 10; int foo() { return x; } int& goo() { return x; } int n = 10; n = 10; // ok 10 = 20; // error foo() = 10; // error goo() = 10; //<.. 2015. 8. 24.
5일차 - 가변인자 템플릿 (variadic template) (2) 가변인자 템플릿의 활용 앞의 글에서는 가변인자 템플릿의 기본 문법들과 간단한 활용에 대해 다뤘다. 이번 글에서는 가변인자 템플릿을 조금 더 실용적으로 사용하고 있는 예제들을 살펴보고자 한다. 활용1 - xtuple 예전 Template 부분 전문화(2)에서 Recursive Duo를 선형화하는 기술로 Tuple을 다뤘었다. 그 때의 Tuple은 Duo 템플릿을 기반으로 만들어졌기 때문에 겉보기에도 복잡하고, 결정적으로 최대 5개의 타입만을 저장할 수 있다는 문제가 있었다. 하지만 가변인자 템플릿을 이용하면 인자의 개수 제한도 없고, 예전보다 훨씬 단순한 구조의 tuple을 만들 수 있다. 그럼 가변인자 템플릿을 이용한 tuple을 만들어보자. #include using namespace std; temp.. 2015. 8. 21.
5일차 - 가변인자 템플릿 (variadic template) (1) Variadic template 가변인자 템플릿은 템플릿의 타입 인자의 종류 및 개수가 가변적인 것을 말하며, 이는 C++ 11의 중요한 특징중 하나이다. 우선 가변인자 템플릿을 아주 심플하게 사용하는 예를 살펴보면서 기초적인 내용 정리를 해보자. template class Test {}; template void foo (Types ... args) {} int main(int argc, char* argv[]) { foo(1, 3.4, "a"); Test t; return 0; } Types는 여러 개의 '타입'을 나타내며, 주로 'Types', 'ARGS' 등의 단어를 관례적으로 많이 사용한다. 그리고 args는 Types에 부합하는 타입 객체들의 집합으로서, "parameter pack"이라고 부.. 2015. 8. 12.
5일차 - range-based for loop Intro C++ 11으로 넘어오면서 다른 언어가 가진 foreach 개념이 C++에도 도입되었다. #include #include using namespace std; int main(int argc, char* argv[]) { int x[3] = { 1,2,3 }; vector v = { 1,2,3,4,5 }; // 기존(C++ 98)의 for loop for (int i=0; i< 3;++) { cout 2015. 8. 11.