C++11 에 추가된 기능 정리
- ⭐ Game Programming/C++
- 2021. 9. 17.
C++ 11
C++ 11에서 추가된 기능들을 정리하고자 한다.
1. auto
컴파일 시에 자동으로 타입을 정해주는 키워드
auto i = 10; // i는 int 타입
auto l = 10L; // i는 long 타입
auto* pi = &i; // i는 int* 타입
auto* pc = new MyClass(); //pc는 MyClass* 타입
iterator를 사용할 때 간략화 하기 좋다.
std::list<int>::iterator iter = m_list.begin();
auto iter = m_list.begin();
2. lambda (람다)
이름 없는 함수, 함수 객체 자리에 함수 자체를 직접 구현 가능하며 함수 포인터처럼 사용도 가능하다.
bool compare(const int& A, const int& B) const { return A < B; }
std::vector<int> vecInt;
std::sort(vecInt.begin(), vec.end(), compare);
std::sort(vecInt.begin(), vec.end(), [](const int& A, const int& B)
{
return A < B;
}
auto printFunc = []{std::cout << "Hello World" << std::endl;
printFunc();
3. range base for
범위 기반의 for문으로 기존 for문을 간략화 하였다.
std::vector<int> vecInt;
int sum = 0;
for(auto it : vecInt)
{
sum += it;
}
4. nullptr
NULL(0)대신 pointer의 null 값인 nullptr가 추가되었다.
5. shared_ptr
스마트 포인터 참조 카운트가 0이되면 자동으로 메모리를 해제한다.
순환 참조 문제가 있다.
6. unique_ptr
순환 참조 문제를 해결하기 위해 참조가 1개만 존재하는 스마트 포인터이다.
7. tuple
2개 이상의 서로다른 데이터 타입을 묶을수 있다.
2개 이상의 리턴값이 필요할 때 활용 가능
std::tuple<int, int> GetPosition()
{
return std::make_tuple(x, y);
}
8. array
일반 고정 배열 타입
std::array<int, 10> arr;
arr.fill(1);
for( int i = 0; i < 10; i++)
{
arr[i] = i;
}
9. forward_list
단방향 리스트 list보다 용량이 적고 빠르다.
std::forward_list<int> flist;
for( int i = 0; i < 5; i++)
{
flist.push_front(i);
}
10. unordered_map
정렬되지 않은 map 컨테이너, hash_map과 같은 구조
11. emplace
STL 컨테이너들에게 emplace 계열 함수가 추가되었다.
emplace는 컨테이너 내부에서 생성후 추가하는 방식이기에 임시객체를 생성하지 않거나 생성횟수를 줄일 수 있다.
12. chrono
나노세컨드 까지 계산이 가능하다
13. thread
C++ 언어차원의 thread / mutex 클래스도 추가되었다.
14. function
callalbe들을 객체형태로 보관할수 있는 클래스이다.
15. decltype
decltype은 특정 표현식의 타입을 알려준다.
int a = 10;
int b = 20;
decltype (a+b) add = a+b;
//add는 int타입
반응형