22/12/02

CJB_ny·2022년 12월 2일
0

공부 요약

목록 보기
34/38
post-thumbnail

Mordern C++

Algorithm

std::for_each. std::find_if, std::any_of, std::count_if 등등 있는데

주의 해야할 부분이 std::remove_if 이거임

vector특성상 erase가 개 느리기 때문에 필요없는 부분을 남기는 느낌이 강함.

그래서

v1.erase(std::remove_if(v1.begin(0, v1.end(), [](int& n) { return n % 2 ==0; }), v1.end());

이런식으로 지운다.

remove_if iterator를 반환함.

auto

참조, 포인터 무시함

그래서 "auto&" value = vec[0]; 이런식으로 명시 해주어야함.

{}

중괄호 초기화

initialize_list 를 인자로 받는 생성자

nullptr

0, NULL 쓰지말고 nullptr 써라

using

typedef 말고 using 써라

template <typename T>
using List<T> = std::list<T>;

List<int> l1;

이렇게는 가능하지만

template <typename T>
typedef std::list<T> List<T>;

이런거는 안됨.

enum class

scope이냐 unscope이냐 차이점

delete

복사 생성자나, 복사대입 연산자 막을 경우 void Test() = delete;

override, final

상속받는 자식 클래스 함수에다가

virtual void Attack() override;

virtual void Attack() final;

오른값 참조

임시객체를 Knight& knight로 받을 수 없다.

사라질 녀석인데 TestKnight_LValueRef에서 수정하거나 할 수도 있기 때문에 => 좀 당연한 소리가 된다.

반면에 const Knight& knight는 받을 수 있음. => 이것도 좀 당연하게 const붙으면 수정을 할 수 없으니까 가능한거임.

전달 참조

profile
https://cjbworld.tistory.com/ <- 이사중

0개의 댓글