C++ 36

[C++ keyword] noexcept

c++11 ~ 이 함수는 예외를 throw하지 않아요~ 라고 컴파일러에게 알려주는 키워드. 알려주면 뭐가 좋나? 컴파일러가 컴파일 할 때에 최적화를 좀 더 잘 해준다고 한다. 사용법 : void func1() noexcept; void swap() noexcept(true); void func3() noexcept(false); 이런 식으로. noexcept == noexcept(true) 이고, true, false를 써 놓은 곳엔 다른 표현식이 들어갈 수 있다. 그것을 이용하면 template T someFunc() noexcept(sizeof(T) < 4); 이런 식으로 조건부로 noexcept를 걸어줄 수도 있다. 다만 noexcept로 선언하여 컴파일러에게 '이 함수는 에러가 발생하지 않아!' ..

C++/기타 2023.03.02

[C++ keyword] explicit 란?

1. copy initialization을 막아주는 keyword. 해당 keyword를 붙이면 direct initialization만 가능하다. 2. 암시적 형변환을 막아주는 keyword. 그래서 그게 머임? 쉽게 표현하자면, copy initialization : = 뒤에 나오는 표현 식에 의해 초기화 될 때 direct initialization : (). {} 등으로 직접 초기화 될 때. -> 밑의 예시를 보자. struct A { A(int) { } A(int, int) { } }; struct B { explicit B(int) { } explicit B(int, int) { } }; 이런 식으로 explict를 쓰지 않은 A explict 를 쓴 B가 있다고 하자. 저 두 개의 A, B를..

C++/기타 2023.02.25

[C++ Container] map/unordered_map. at, []. element access 차이

C++11 ~ 빠른 결론 : 없었던 것을 access할 때 [] -> 빈 값으로 세팅한다. at -> out_of_range exception을 throw 한다. 나머지 부분은 전부 동일. map / unordered_map 에서 key를 통해 값을 가져오는 두 가지의 방법. map.at(KEY) map[KEY] #include #include #include using namespace std; int main() { map colorCode { {"red", "FF0000"}, {"green", "00FF00"}, {"blue", "0000FF"}, }; cout

C++/STL 2023.02.24
반응형