본문 바로가기

#DevStudy/C++4

define 과 inline 함수 #define전처리 명령어. 값을 치환해서 적용.속도가 빠르다. 자료형에 독립적이다. 함수 호출 시 요구되는 스택 할당 필요가 없다.복잡한 정의를 할 때 사용하기엔 좋지 않다.디버깅이 불편해서 오류가 발생하면 고치기 힘들다. #define SQUARE(x) ((x) * (x)) inline 함수함수와 매크로의 중간쯤 역할.컴파일러에 의해 코드가 생성되서 바이너리 구역에 위치하게 됨. 많이 쓰면 메모리 잡아 먹는다.성능 면에서 문제가 된다고 판단되면 컴파일러가 inline 을 무시할 수 있다. 반대로 inline 이 없어도 컴파일러 판단 하에 inline 함수로 만들 수도 있다.길이가 긴 함수에 사용하는 것은 좋지 않다.자료형에 독립적으로 사용하려면 template 사용. template inline T .. 2016. 8. 9.
C++ STL - 순차컨테이너 순차 컨테이너 1. vector #include using namespace std; 선언 vector v; vector v(5); // v[0]~v[4] = 0 초기화 vector v(5,1); // v[0]~v[4] = 1 초기화 삽입 / 삭제v.push_back(10); // 가장 끝에 원소 10 추가 v.pop_back(); 크기 v.size(); // 실제 들어있는 데이터의 크기 v.capacity(); // 현재 할당받은 메모리의 크기 재할당v.resize(10); // 데이터를 재할당 v.resize(10, 1); // 데이터를 재할당 , 1로 초기화v.reserve(10); // 할당받은 메모리를 재할당v.reserve(10, 1); // 할당받은 메모리를 재할당 , 1로 초기화 출력 cout 2016. 4. 19.
C++ 11 - 스마트 포인터 동적 메모리 할당과 해제에서 개발자의 실수로 발생하는 메모리 누수를 스마트하게 처리해주는 포인터. 1. auto_ptr #include class test{public: test(){ cout introduce(); ptrtest2->introduce(); *또한 auto_ptr 은 C++ 11 표준이 아니다. 2. unique_ptrauto_ptr 의 소유권에 의한 오류를 컴파일 단계에서 잡아준다.C++ 11 표준이다. 3. shared_ptr하나의 동적 객체에 대해 아예 여러개의 스마트 포인터가 가리킬 수 있도록 한다.C++ 11 표준이다. 2016. 4. 8.
C++ 11 - chrono 시간 측정 #include int main(int argc, const char * argv[]) { int n; chrono::system_clock::time_point start = chrono::system_clock::now(); for(int i = 0; i < 100000000; i++){ n++; } chrono::duration sec = chrono::system_clock::now() - start; chrono::microseconds mic = chrono::duration_cast(sec); cout 2016. 4. 6.