C++ 36

[C++ 20] Concepts 2

2023.05.23 - [C++/STL] - [C++20] Concepts [C++20] Concepts https://en.cppreference.com/w/cpp/concepts Concepts library (since C++20) - cppreference.com The concepts library provides definitions of fundamental library concepts that can be used to perform compile-time validation of template arguments and perform fun donot-simsim.tistory.com 위 글에서 한번 다루긴 했는데, 그때는 너무 수박 겉핥기식으로 해둬서... 조금 더 공부했기에 다시 올..

C++/STL 2024.02.22

[C++] CRTP 패턴.

CRTP [curiously recurring template pattern] 모든 언어에서 사용하는 패턴은 아니다. 오직 C++ 에서만 숙어처럼 사용하는 패턴이다. template을 이용하여 [본인의 자식 타입] 을 typename 으로 가진다. 그렇게 사용하니 이름이 curiosuly recurring template pattern. 즉 요상하게 반복되는 template pattern이 되었나 보다. 1. CRTP 형태. 2. 사용하는 이유. 3. 예제. 3 - 1. 일반적인 방식으로 구현. 3 - 2. CRTP 패턴으로 구현. 4. C++ 에서 실제 활용하는 코드. 1. CRTP 형태. 말로 풀어 쓰면 아래와 같다. - 기반 클래스를 템플릿으로 만들고 - 파생 클래스 만들 때 자신의 클래스 이름을 ..

C++/기타 2024.02.13

[C++] remove(remove_if) vs erase(erase_if)

결론부터 말하면 C++에서 둘은 완전히 다르다. 조심히 사용하여야 한다. 만약 'vector에서 특정한 조건을 만족시키는 값들을 삭제' 할 때 사용하려고 한다면 물론 둘 다 사용 가능하긴 하다. 다만 erase_if를 사용한다면 원하는 바를 바로 얻을 순 있지만, remove_if를 사용한다면 추가적인 단계를 한 번 더 밟아야 할 것이다. remove_if : 알고리즘은 컨테이너에서 조건을 만족하는 요소를 뒤로 이동시키고, 그 뒤에 유효한 요소 범위를 반환합니다. 실제로 요소를 삭제하지 않고 이동시킨 뒤, 이후의 유효한 요소만 남도록 컨테이너의 크기를 조정합니다. 라고 나와있다. 즉, "aa", "bb", "cc", "dd" 라는 vector가 있을 때, "bb"를 remove_if 한다고 하면 "aa"..

C++/STL 2023.07.11

[C++] Statement vs Expression

제대로 몰라도 구현할 때엔 큰 차이가 없는 것이지만, 그래도 정확히 알아두면 좋겠다 싶어서 정리. C++ 공식 문서에서 basic concepts를 들어가 보면 아래와 같이 statement/ expressions에 대한 간단한 설명을 볼 수 있다. 저렇게 되어 있는 걸 보니 일단 두 가지는 확실하게 알겠다. 기본 컨셉에 나올 만큼 C++의 근본 요소라는 것. statement가 expression보다 상위 표현이라는 것. 1. Statement https://en.cppreference.com/w/cpp/language/statements Statements - cppreference.com Statements are fragments of the C++ program that are executed ..

C++/기타 2023.06.25

[C++] 함수에 const 한정자

class myClass { public: const int getdata1(); int const getdata2(); int getdata3() const; }; 이런 느낌의 함수. 어디 클린 코드의 강의 내용을 보면 한정자를 잘 쓸수록 코드가 좀 더 정확해진다는데, 지금까진 별 개념없이 사용해 왔어서, 시간이 나서 한 번 정리해본다. 결론부터 말하자면, getdata3() 빼고는 의미가 없다. getdata3 은 함수 내부에서 값이 바뀌지 않을 거라고 보증해준다. 그러므로 코드를 작성하다, 만약 const라고 붙인 함수 내부에서 값이 변경되면 컴파일러가 빌드 전에 바로 알려준다. 다만, const가 앞에 붙은 경우엔 다르다. 이 때는 return type인 int를 const라고 해 준다. retu..

C++/기타 2023.06.15
반응형