목록전체 글 (253)
bdfgdfg
람다(lambda) 식 간단하게 말하면 이름없는 함수를 의미한다. 함수를 호출하는 방법은 C++에서는 다양한 방법이 존재한다. 1. 일반 전역 함수, 멤버 함수등 2. 함수 객체 ( 클래스 () 연산자 오버로딩 ) 3. 함수 포인터사용 여기서 벡터 컨테이너의 요소를 정렬하는 코드를 보면. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 bool Compare(std::pair lhs, std::pair rhs) { return lhs.first.GetValue() > rhs.first.GetValue(); // 내림차순 정렬 } int main() { srand(time(nullptr)); std::vector vc; vc.reserve(100); for ..
using c++11에서 추가된 typedef대신 사용할 수 있는 키워드 typedef을 사용하면 사용자가 여러 타입의 별칭을 생성하고, 사용할 때에는 해당 별칭을 통해 사용할 수 있다. -> 참조 키워드에서 해당 메모리에 다른 별칭을 붙이는 것과 비슷한 개념. -> C/C++에서 이미 정의된 자료형이나 사용자 정의 자료형을 사용자가 원하는 별칭을 붙여 사용 가능하다. typedef이 사용될 수 있는 간단한 예제를 보면 1 2 3 4 5 6 7 8 9 10 11 typedef std::list::iterator ListPos; int main() { std::list list; list.push_back(100); ListPos iter = list.begin(); std::cout
default,delete C++11에서부터 default키워드를 이용하여 명시적으로 default한 생성자를 선언할 수 있다. 1 2 3 4 5 6 7 class Test { // 컴파일러가 기본적으로 기본생성자,소멸자,복사생성자등을 만든다. private: int m_test; }; Colored by Color Scripter cs C++11이전부터 클래스 내부의 생성자를 만들지 않더라도 기본적으로 기본생성자,복사생성자,대입복사연산자,소멸자 등을 만들어 줬다. (+ C++11이후에는 기본 생성 함수에 move 생성자와 대입연산자도 추가되었음) 기본 함수를 정의하면 컴파일러는 해당 기본 생성자를 만들어 주지 않는다. default키워드는 그것을 명시적으로 만든다. 그렇기에 비어 있는 생성자나 소멸자를..
auto C++11에서 등장한 문법이며 변수의 자료형을 컴파일 타임에 추론하여 자료형을 결정한다. -> 그렇기에 auto 변수를 반드시 초기화 해야 된다. (동적(런타임)으로 자료형이 결정되지 않으므로) -> 런타임에 결정되는게 아니므로 런타임 성능에 영향x auto를 사용하여 포인터와 참조를 받을수도 있다. -> 포인터를 받을 때 선언 : auto 혹은 auto* -> 참조를 받을 때 선언 : auto& 포인터는 기본 auto로 받아도 되고 auto*로도 받을 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 class Test { public: Test(std::string& value) : m_str(value) {..