html,body { margin: 0; padding: 0;}@media only screen { body { margin: 2em auto; max-width: 900px; color: rgb(55, 53, 47); }}body { line-height: 1.
scanf()를 어느정도 대체scanf는 (char\*) 경계 검사를 하지 않는다.문자열의 끝을 알 수 없기 때문에 마지막을 null로 판단한다.cin도 같다.namespace : ios_basebitflaggoodbiteofbitfailbitbadbitmethodgo
별칭을 붙이는 것이다.NULL 이 올 수 없다.초기화 필수이다.Pointer, Reference 비교장점NULL Check X메모리 연산을 할 수 없다→ 강제성을 부여해 안전하다.→ 기계 입장에선 같다. 인간을 위한 것
문자열 길이에 대해 고민할 필요가 없음string stepheap 메모리 할당은 느림메모리 단편화 문제 → 새로운 길어진 메모리 할당 실패내부 버퍼 증가는 멀티 쓰레드에서 안전하지 않을 수도C++를 쓰는 업계가 어디인지 생각할 것→ 그래서 여전히 sprintf와 함께
mode flagsinoutateapptruncbinaryhttps://s3-us-west-2.amazonaws.com/secure.notion-static.com/c9f4efd8-45ff-432f-97fc-8a93b5861ac7/Untitled.pngscop
https://s3-us-west-2.amazonaws.com/secure.notion-static.com/fff908ab-9e2c-450d-a90f-82e4f4be88d0/Untitled.pngnew, delete는 기본 연산자, 생성자와 소멸자를 호출한다m
컴파일러 자동 형변환프로그래머가 직접 형변환C++ 캐스팅 → 기존 C 캐스팅이 너무 많은 일을 함, 4가지로 구분static_castconst_castdynamic_castreinterpret_cast
일반 함수는 호출할 때 메모리로 한번 점프하는 과정을 걸친다.이때 함수가 저장된 메모리가 멀리 떨어져 있을 경우 성능을 손해본다.모든 걸 함수로 만들지 말자.너무 긴줄에 가독성을 높일 때재활용 성이 있을 때위 경우에 함수로 만들자.
Scope의 제한을 받는 전역 변수이다.다른 파일에서는 수정할 수 없다.In File, Namespace, Class, Function클래스당 하나의 메모리 공간에만 존재한다.각 개체마다 생기는 것이 아니다.컴파일 순간에 메모리에 할당돼 있다.static 변수가 다음
STL (Standard Template Library)Container : 데이터를 담는 그릇vectormapsetstack queuedequelist...Template 기반모든 컨테이너에 적용되는 표준 인터페이스메모리 자동 관리
어떤 자료도 넣을 수 있는 동적 배열 (동적 = 메모리 자동 관리)저장된 모든 요소가 연속된 메모리 공간에 위치\-> 메모리 자동 관리 배열이다.순서 상관없이 요소에 임의 접근 가능하다.제일 마지막 요소 삽입/삭제가 빠르다.중간 요소 삽입/삭제 느리다.재할당 및 요소
key, value 쌍으로 저장된다.key는 중복될 수 없다.C++ map은 자동 정렬(이진 탐색 트리) 된다. (bad..)탐색 속도가 빠름자동 정렬됨hashmap이 아님, O(1)이 아님C++11에 해결책이 있음
Key만 저장된다. 중복되지 않는다.(이진 탐색 트리) 정렬된다. \-> Key만 저장되는 것 외 map과 같다. (이하 생략)FIFO 자료구조vector, map을 주로 쓰고 나머진 잘 쓸일이 없다.LIFO 자료구조앞뒤 요소가 포인터로 연결된 자료구조.보통 Vecto
java generic과 비슷자료형을 중복으로 작성하지 않아도 됨컴파일시 타입을 해석해서 작성해준다.typename vs class차이는 사실상 없다. 가독성을 위해 그냥 typename 쓰자template의 구현체는 h에 적는다.컴파일 시에 template를 해석해야
요소 범위에서 쓸 수 있는 함수들 배열 or 몇 STL Container에서 사용 가능반복자를 통해 접근Container의 크기를 변경하지 않음변경 불가 find(), for_each() ...변경 가능 copy(), swap() ...정렬sort(), merge()
데이터형을 자동으로 추론 정한다.컴파일시에 정해진다. -> 초기화가 필수다.auto, auto\*, auto& 셋다 가능.auto가 auto를 대체할 수 있다. (하지만 가독성을 위해 auto로 표현)auto가 auto&를 대체할 수 없다.const를 포함하여 대체 가
assert -> 실행 중 조건이 부합하는지 평가한다.assert는 runtime에서 확인할 수 있다.complie 과정에서 assert 수행한다.assert 보다 static_assert를 사용하자.좋은 습관이므로 많이 사용하자.
생성자와 관련된 키워드이다.compiler가 생성자를 자동으로 만들어 달라는 표현이다.default가 없어도 자동으로 생성해주지만 다른 해석의 여지가 있다.명확하게 작성해 주는게 좋다.compiler가 자동으로 만들어 주길 원하지 않을 때 사용한다.private 영역에
클래시나 가상 함수의 상속을 막는다.컴파일 도중 확인 가능하다 (good)가상 함수가 아니면 쓸 수 없다.잘못된 함수 오버라이딩을 예방한다.컴파일 도중 검사한다.가상 함수가 아니면 쓸 수 없다.
멤버들의 상대적 위치(offset)을 구한다.특정 멤버가 본인을 포함한 자료 구조 시작점부터 몇 바이트만큼 떨여져 있는지 알려준다.직렬화, 역직렬화에 유용하다.매크로 이다.
기존 NULL의 문제?C에서 NULL은 사실 숫자 0이다.int에 넣으면 0이 들어간다.nullptr을 순수 NULL을 의미한다.int에 넣을 수 없다.nullptr을 사용하자!
사실 int는 4 Byte라는 표준은 없다.플랫폼마다 다를 수 있다.다른 기본 자료형도 마찬가지다.char, short, long, long long, int ...컴파일러 제작자에게 달려있다.int8_t, uint8_tint16_t, uint16_tint32_t, u
타입이라기 보다는 실제로는 정수이다. 서로 다른 enum이라도 순서(=숫자)만 같아도 비교가 가능하다. Type 체크를 안하기 때문 잘못된 비교 가능.서로 다른 enum class끼리는 비교할 수 없다.독자적 타입으로 인정되어 자료형 검사.타입 고정 가능단순 int가
보통 예상되는 hashed기반이 아닌 이진트리 기준으로 정렬을 하는 Container 였다. 삽입/제거에 성능이 저하된다.그래서 정렬을 하지 않는 추가 Container를 만들었다.기준 map과 기능은 같다.해시맵 기반 -> 해시함수가 생성하는 색인 기반의 버킷들로 구
단순히 C 스타일 배열을 추상화 한것.요소 수를 기억하지 않음.그렇게 유용하지 않음.경계체크를 해주나 FixedVector를 직접 만들어 쓰는게 나아보인다.
가독성이 높다.STL Container와 기본 배열 모두에서 동작한다.역순회 할 수 없다.
unique_ptr <- 중요, 강추shared_ptr <- 잘안씀weak_ptr <- 잘안씀메모리 해제를 수동으로 해주어야 한다.스마트 포인터는 delete를 직접할 필요가 없다.가비지 콜렉터보다 빠르다.주기적으로 가비지를 콜렉터하는게 아니라 필요하지
주소가 있음이름이 있는 변수const 변수배열 변수비트 필두구조체클래스\-> 지금껏 봐왔던 일반적인 변수일시적인 값&& -> rvalue 참조 연산자& -> lvalue 참조 연산자move()lvalue를 rvalue로 변환하여 반환하는 함수였다.student2로 데이
컴파일중 값으로 변경할 수 있으면 런타임이 아닌 바로 값으로 변경해 놓는다.변경이 불가능하면 런타임시 함수 수행.constexpr을 사용하지 않아도 자발적으로 값으로 변경해 놓는 컴파일러도 있다.constexpr은 컴파일시 평가해 달라는 개발자의 의도를 보여주는 방법이
이름이 없는 함수 개체내포되는 함수재활용하지 않을 일회성 함수를 간편하게 작성하는 방법\[] 안에 외부 변수 Capture 방식을 지정한다.값에 의한 캡쳐 개체를 수정할 수 있게 해준다.괜찮은 언어 디자인이나 기존 c++ 방식과 반대된다.반환형을 지정해 준다.안적어도
복수 매개변수를 지원한다.활용할 일이 많이 없다.
C++17의 새로운 라이브러리이다. "std::fs"그 전에는 파일 시스템의 구성요소에 연산할 방법이 없었다.\-> 운영체제에 있는 lib를 사용했다.위치가 같으면 변경과 같다.재귀적으로 파일을 순회한다.
아직 공식지원하지 않는 기능이다.2020 출시될 예정?.cpp와 .h를 나눌 필요가 없어진다.컴파일 속도가 빨라진다.java package처럼 작동한다..cpp, .h 있는 레거시 코드는 어떻게?Math.hMath.cppMain.cppMath.ixxMain.cpp
C++에서 지원하지 않아 OS마다 구현 방법이 달랐다.OS Lib를 가져다 써야하던 Thread 기능이 생겼다. (C++11)참고 : https://en.cppreference.com/w/cpp/thread표준 c++ 쓰레드이동 가능복사 불가능Thread의 고