C++ 표준
- 표준은 ISO 결정
- 현재 C++20까지 나옴
컴파일러에서 지원하는 표준이 따로 있다.
Q. 컴파일러와 표준의 관계 ?
= GCC 버전 마다 지원하는 표쥰이 다르다.
Const (C++98)
- const는 컴파일 단계서 보증한다.
- 값 초기화를 강제 한다.
destructor의 통해서 객체의 라이프 타임을 관리 할 수 있다.
- 해제는 destructor 에서 한다.
Q. std::string s{"ㅁㄴㅇㄻㄴㅇㄹ"}
=compiler가 list initialzation 으로 바꿔서 constructor에 매칭한다.
Template의 필요성. (C++ 98)
- Type만 바꾸면서 사용하기 위해서 사용한다.
- 컴파일 타임에 코드가 생성된다.
- 코드 재사용성에 좋다.
enum안에서 수식을 쓸수있다.
- template factorial
지역변수 리턴 하는 경우
동적 할당된 변수를 리턴한다.
return vaule optimization.
vector
배열대신 써라.
알고리즘을 써라
std::accumulate()
STL(standard Template Library)
아래 꺼를 사용하는 것이 좋다.
set<>
vectorK>
for_each
any_of
std::array (C++11)
배열 사이즈를 결정하여. 생성한다.
Q. 배열보다 뭐가 좋은가??
- list initialize를 할수 있어서 코드를 줄일 수 있다.
std::array<VT,2> data{v1, v2};
진화 버전 1
완벽한 최종 진화 버전 (Variadic Templates)
get_data의 v1까지 추가하기 위해서 params + 1 을 해주어야한다. (같은 타임만 가능하다)
List Initialization (C++11)
constexpr ( C++14)
- 컴파일 타임에 값이 결정 되어야한다.
- const는 값은 컴파일 타임에 지정 안될수도 있다.
Ex) std::vector<int> ints;
const i = ints[4]; //OK , 가변적으로 내용을 바꾸고 싶을때
- constexport의 값은 컴파일 타임에 지정 되어야 한다.
Ex) std::vector<int> ints;
constexpr i = ints[4]; // error
auto 는 컴파이리 타임에 형식이 결정 된다. (C++11)
High order fcution construction
map
for_ecah
functor
operator()()를 사용하여 class를 함수로 만들어 버린다.
언제 많이 쓰나??.. for_each에서 많이 쓴다.
Lambda
functor를 대체 한다.
Lambda 재상용이 가능 하다.
Generic And Variadic Lambda
'ProgrammingLang > c++' 카테고리의 다른 글
[C++개발자되기]29. promise 와 future 그리고 async (0) | 2022.08.11 |
---|---|
[C++]Template (0) | 2022.06.21 |
[C++] 언어의 철학 (0) | 2022.01.25 |
[C++개발자되기]28. 파일 다루기 2부(확장자 검사) (0) | 2022.01.19 |
[C++개발자되기]26. L-value, R-value, &, && 와 std::move의 관계 (0) | 2021.12.05 |