[Basic C++] #70_decltype
C++ 11에서 제공하는 decltype 키워드에 대해 알아보겠습니다.
Overview
- 개념
- 예제
#0. 개념
1. 정의
- C++11부터 지원되는 decltype 키워드는 개체의 선언된 유형을 검사하거나, 표현식의 유형 및 값 카테고리를 검사하는 기능을 합니다. decltype 키워드는 표현식의 선언된 유형을 살펴봄으로써 컴파일 시간에 해당 유형의 정보를 얻을 수 있도록 합니다.
#1. 예제
1. 예제-1
#include <iostream>
#include <string>
using namespace std;
int main() {
string str = "Hello, World!";
decltype(str) str_copy = "This is a copy.";
cout << "str_copy: " << str_copy << endl;
return 0;
}
Details
- decltype 키워드를 통해 string 유형의 str 변수의 유형을 추출해 동일한 유형의 새로운 변수를 선언합니다.
2. 예제-2
#include <iostream>
#include <vector>
using namespace std;
vector<int> create_vector() {
return vector<int>{1, 2, 3, 4};
}
int main() {
decltype(create_vector()) numbers = create_vector();
for (auto num : numbers) {
cout << num << " ";
}
return 0;
}
Details
- decltype 키워드를 통해 함수 반환 유형을 추출해 동일한 유형의 변수를 선언합니다.
3. 예제-3
#include <iostream>
#include <set>
#include <string>
using namespace std;
int main() {
auto Predicate = [](const string& a, const string& b) { return a > b; }
set<string, decltype(Predicate)> my_set(Predicate);
my_set.insert("hello");
my_set.insert("world");
my_set.insert("apple");
for (const auto& s : my_set) {
cout << s << " ";
}
return 0;
}
Details
- decltype 키워드를 통해 람다 함수 유형의 함수 객체를 컨테이너의 Predicate로 전달합니다.
'언어 > Basic C++' 카테고리의 다른 글
[Basic C++] #72_unordered_map (1) | 2023.12.15 |
---|---|
[Basic C++] #71_multiset (0) | 2023.12.15 |
[Basic C++] #69_priority_queue (0) | 2023.06.22 |
[Basic C++] #68_deque (0) | 2023.06.16 |
[Basic C++] #67_queue (0) | 2023.06.16 |