11. 선택 연산
11.2 힙 영역 메모리
11.2.1 메모리 관리
11.2.2 배열
// 사용하면 안되는 방식!
void f1()
{
X* p = new X;
// ... *p 를 사용한다.
delete p;
}
// 사용해도 되는 방식.
void f2()
{
X x;
// ... x 를 사용한다.
}11.2.3 메모리 공간 확보
11.3 리스트 {}
11.3.1. 리스트 {} 구현 모델
{} 는 아래와 같이 다양한 용도로 사용된다.
-> 이는 {} 가 범용 모델이며 컴파일러에 의해 효율적인 최적화가 가능하다.
{} 타입은 auto 와 함께 사용시 모든 원소가 동일한 타입일 경우에만 사용이 가능하다.
11.3.2 qualified list
11.3.3 unqualified list
일반적인 템플릿 인자에 대해 unqualified list 타입을 추론할 수 없다.
11.4 람다 표현식
11.4.1 구현 모델
실제로 람다식은 컴파일러가 해당 람다식에 대한 익명 클래스를 생성하고, 해당 클래스의 개체를 만들어서 사용한다!
클로저 개체(closure object)
11.4.2 람다의 대안
step1. 람다식 대신 단 한번만 사용되는 직전 클래스 생성
step2. 람다식 사용
step3. for_each 대신 for 문사용(람다식 미사용)
step4. 좀 더 많은 컨테이너를 사용하기 위한 템플릿 사용
11.4.3 캡처
11.4.3.1 람다와 수명
11.4.3.3 람다와 this
11.4.3.4 mutable 람다
Last updated