typedef 원래타입 새이름;
#include <iostream>
using namespace std;
typedef int i;//int를 i로 대신 쓰겠다
int main()
{
i a =1;
cout<< a <<endl;
return 0;
}
using 새이름 = 원래타입;
#include <iostream>
using namespace std;
//typedef int i;//int를 i로 대신 쓰겠다
using i = int;
int main()
{
i a =1;
cout<< a <<endl;
return 0;
}
using int8 = __int8;
using int16 = __int16;
using int32 = __int32;
using int64 = __int64;
int8 smallNumber = 127; // 8-bit 정수
int32 largeNumber = 1000; // 32-bit 정수
//C++11에서는 <cstdint> 헤더를 사용하여 표준 타입을 제공
//표준 라이브러리를 사용하는 것이 더 이식성이 좋고 권장
#include <cstdint>
using int8 = std::int8_t;
using int16 = std::int16_t;
using int32 = std::int32_t;
using int64 = std::int64_t;
C++11 이상을 사용하는 경우에는 <cstdint>에서 제공하는 표준 타입(int16_t, uint16_t 등)을 사용하는 것이 훨씬 더 좋다.
why?
using MyInt = int;
using ULL = unsigned long long;
// 사용
MyInt a = 10; // int 타입 변수
ULL bigNumber = 200000; // unsigned long long 타입 변수
using IntPtr = int*;
IntPtr p1, p2; // p1과 p2는 int* 타입
특징 typedef using
문법 | 복잡한 타입일수록 읽기 어려움 | 더 간결하고 가독성 좋음 |
템플릿 지원 | 템플릿 타입 별칭을 지원하지 않음 | 템플릿 타입 별칭 지원 |
지원 버전 | C++98부터 사용 가능 | C++11 이상에서 사용 가능 |
가독성 | 복잡한 표현에 비효율적 | 복잡한 표현에서도 효율적 |
typedef는 템플릿에서 별칭을 만들 때 사용할 수 없습니다. 그러나 using은 가능합니다.
// typedef는 템플릿에서 지원하지 않음
// typedef std::map<Key, Value> MyMap<Key, Value>; // 에러 발생
// using으로 템플릿 별칭 생성
template <typename Key, typename Value>
using MyMap = std::map<Key, Value>;
// 사용
MyMap<int, std::string> myMap;
typedef std::map<int, std::vector<std::string>> IntToVectorMap; // typedef
using IntToVectorMap = std::map<int, std::vector<std::string>>; // using
#ifdef _WIN32
typedef unsigned long MySize;
#else
typedef unsigned int MySize;
#endif
template <typename T>
using Vec = std::vector<T>;
Vec<int> v; // std::vector<int>와 동일
typedef void (*FuncPtr)(int, double); // typedef
using FuncPtr = void (*)(int, double); // using
scanf vs cin and getline() (1) | 2024.12.13 |
---|