C++ STL 알고리듬
·
C++
STL 알고리듬이란? 1. 요소 범위에서 쓸 수 있는 함수들 [처음, 마지막) 2. 배열 또는 몇몇 STL 컨테이너에 쓸 수 있음 3. 반복자를 통해 컨테이너에 접근 4. 컨테이너의 크기를 변경하지 않음(추가 메모리 할당이 없다) STL 알고리듬의 유형 #include 변경 불가 순차(sequence)연산 find(), for_each(), ... 변경 가능 순차 연산 copy(), swap(), ... 정렬 관련 연산 sort(),merge();, ... #include 범용 수치 연산 accumulate(), ... STL 알고리듬은 많다. http://www.cplusplus.com/reference/algorithm/ 참고 생각보다 구현되있는 것이 많지만 직접 손으로 코드를 짜는 사람이 많다.
C++ 탬플릿 프로그래밍
·
C++
형태 template ; template ; typename과 class 차이? -> 없다 그냥 typename을 사용하면 된다. 템플릿을 인스턴스화 할 때마다 컴파일러가 내부적으로 코드를 생성 템플릿에 넣는 자료형 가지수에 비례하여 exe파일 크기 증가 컴파일 타임 도중 다형성 부여가 가능하다. STL을 돌게하는 주된 프로그래밍 방식 코드를 중복 작성할 필요가 없어졌다. #define MAX 3 const int MAX = 3; static const int MAX = 3;에 대한 해결 방안 => class 이름 { private: enum { MAX = 3 }; //상수화 된다. int Arr[MAX]; } 클래스 위에 template을 선언하여 클래스템플릿 생성이 가능하다. 선언 template c..
C++ 15일차
·
C++
큐란? 선입 선출 자료구조(먼저 온것 먼저 처리 방식) pop은 맨 앞의 데이터를 빼고 /push는 맨 뒤에 데이터를 넣음 front 가장 먼저 삽입된 요소를 참조로 반환 /back 가장 마지막에 삽인된 요소 참조로 반환 size queue의 요소 수 반환 /empty queue가 비어있으면 true 아니면 false 큐 만드는 법 ex) std::queue Name; 스택? 후입 선출 자료구조(통에 물건을 넣고 빼는 방식) top은 가장 마지막 저장된 요소 참조 반환 push는 맨 위에 데이터를 넣고 pop은 맨 위의 데이터를 뺀다. size, empty 존재 만드는법 std::vector Name; 리스트? (자주 사용하지않음 벡터를 더 많이사용) //실무는 벡터 또는 맵에서 끝남 operator[]..
C++ 14일차
·
C++
맵(Map)이란? 키를 이용하여 내용을 찾는 방식 키와 값이 쌍으로 저장 키는 중복이 될 수 없다 C++ 맵은 자동 정렬되는 컨테이너다.(키 기준) 이진 탐색 트리 기반(오름차순) ex)std::map simpleScoreMap 내가 생성한 클래스는 비교할 수가 없기때문이다. 그러면? Operator
C++ 13일차
·
C++
STL 컨테이너의 목적은 1.템플릿 기반 2.모든 컨테이너에 적용되는 표준 인터페이스 3.메모리 자동 관리 STL 컨테이너에서의 벡터? 벡터는 어떤 자료형도 넣을 수 있는 동적 배열이다. (어떤 자료형? 기본 데이터, 클래스, 포인터) 그 안에 저장된 모든 요소는 연속된 메모리 공간에 위치=배열 요소 수 증가에 따라도 자동으로 메모리 관리 어떤 요소도 임의 접근 가능 제일 마지막에 요소 추가하기 vector의 맨 뒤 요소 추가! push_back(); ex)scores.push_back(30); vector 맨 뒤 요소 제거 pop_back(); //다만 배열에서는 중간을 빼는 경우는 잦아도 맨 뒤부터 빼는 경우는 적다. 용량과 크기의 차이? capacity(); vecotr에 할당된 공간 수(최대 공간..
C++ 12일차
·
C++
C++는 예외를 우선적으로 생각하는 언어가 아니다(JAVA는 예외 위주의 프로그램 언어) 예외 발생 1 - 범위 이탈 INDEX값 보다 size가 커서 발생되는 오류에 대해서는 프로그래머가 해결할 수 있는 문제며, 이 문제에 대해서 해결을 위해 예외처리를 하는 것은 예외처리를 남용하는 것!(예측가능 시는 if로 해결) ->예외처리란 어쩔 수 없는 문제에 대해 처리를 하기 위해 사용하는 키워드 예외 발생 2 - 0으로 나누기 C++에서는 예외가 아니다(단지, 정의되지 않은 값이라고 나옴) if로 해결하는게 옳다 예외 발생 3 - NULL 개체 C++에서는 이것도 예외는 아니다! if로 해결하는게 옳다 그럼 예외처리는 어디서 해야 옳은가??? 예외 발생 4 - 생성자 생성자에서 변수에 new할당을 할 경우 ..