[C++] STL 요약 정리 #1
·
C++
1. STL 구성 요소컨테이너 - 데이터 저장하는 구조체반복자 - 컨테이너 순회를 도와주는 일종의 '포인터'알고리즘 - 정렬, 탐색, 삽입, 삭제 등의 로직을 효율적으로 제공하는 함수컨테이너vector연속적인 메모리 블록 ㅡ> 랜덤 접근 빠름원소 추가/삭제 마지막 원소에 대해 효율적 (push_back, pop_back)중간에 삽입은 비효율적 ㅡ> 데이터가 이동해야함List메모리가 연속적이지 않음 ㅡ> 랜덤 접근 느림중간 삽입/삭제 매우 효율적 ㅡ> 연결된 링크를 끊고 다시 연결만 하면 끝순차적 데이터 추가/삭제 적합Deque양방향 동적 배열임의 접근 가능, 양쪽 끝에서 삽입/삭제 빠름 (push_back, push_front, pop_back, pop_front)중간 삽입/삭제 비효율적priority_..
[C++] STL(Standard Template Library)
·
C++
STLC++에서 제공하는 표준 라이브러리로, 데이터를 효율적으로 저장하고 조작할 수 있도록 설계된 도구 모음STL의 주요 특징일관성 : 다양한 컨테이너에 동일한 문법으로 접근 가능(반복자, 알고리즘 덕분)효율성 : 최적화된 자료구조와 알고리즘 제공유연성 : 다양한 데이터 타입과 상황에 맞게 사용할 수 있는 템플릿 기반 설계STL의 세 가지 주요 구성 요소컨테이너(Container) : 데이터를 저장하는 자료구조알고리즘(Algorithm) : 데이터를 조작하는 함수들반복자(Iterator) : 컨테이너와 알고리즘을 연결하는 다리 역할STL  분류1. 컨테이너데이터를 저장하는 다양한 자료구조 제공 순차 컨테이너 : 원소를 순차적으로 저장하며 크기가 동적으로 조절됨 ㅡ> 사용처 : 데이터의 순차적 접근 및 관..
[C++] 메모리 누수 점검
·
C++
메모리 누수 점검1. CRT 라이브러리 사용#define _CRTDBG_MAP_ALLOC#include #include 명령문 작성_CrtDumpMemoryLeaks();종료 시점 앞에 해당 코드 호출ㅡ> 위 두가지 수행 시 메모리 누수 보고서가 아래와 같이 출력_CrtSetBreakAlloc(18);main 함수 첫 부분에 해당 코드 추가 시 18번째 메모리 할당 지점에서 실행이 중단 ㅡ> 누수 지점 확인 가능But, 컴파일 재진행 시 메모리 위치가 바뀔 수도 있어 아래 방법을 추천* 구체적인 누수 위치 확인을 위한 추가 옵션 (소스 파일과 라인 수 표시)#ifdef _DEBUG#define new new ( _NORMAL_BLOCK , __FILE__ , __LINE__ )#endif해당 코드 추가 ..
[C++] 오버로딩(overloading), 오버라이딩(overriding), 템플릿(Template)
·
C++
오버로딩(Overloading) : 함수 중복 정의ㅡ> 같은 이름의 함수에 매개변수를 다르게 사용하여 매개 변수에 따라 다른 함수가 실행되는 것메소드 이름이 같다리턴형이 같아도 되고 달라도 됨 ㅡ> 리턴형만 다를 경우 에러 발생 (호출해야 할 함수 모호)파라미터 개수가 다르다파라미터 개수가 같을 경우, 자료형이 다르다 ㅡ> 배열과 포인터는 구별 불가(컴파일 에러)오버라이딩(Overriding) : 함수 재정의ㅡ> 상속 받았을 때 부모 클래스의 함수가 아닌 다른 기능을 사용하려 함수를 자식 클래스에서 같은 이름과 매개변수로   재정의 해서 사용하는 것오버라이딩 하려는 메소드가 상위(부모) 클래스에 존재해야 함메소드 이름이 같음메소드 파라미터 개수, 파라미터의 자료형이 같다메소드 리턴형이 같다상위 메소드와 ..
[C++] 참조자(Reference)
·
C++
TIL참조자C언어에서는 어떠한 변수를 가리키고 싶을 때는 반드시 포인터를 사용해야 했음.ㅡ> C++에서는 다른 변수나 상수를 가리키는 다른 방식이 존재. 이를 참조자(reference)라고 부름.#include using namespace std;int main(){ int num=3; int& refNum=num; refNum=5; cout실행결과를 보면 알 수 있듯이 refNum은 num의 참조자이기 때문에 refNum은 num의 또다른 이름(별명)이라고 컴파일러에게 인식되어 refNum에 작업을 수행하는 것들은 사실상 num에 작업하는 것과 마찬가지인 것입니다. 따라서 실행결과가 num, refNum 모두 3이었던 값이 5로 바뀐 것을 확인할 수 있습니다.*유의사항 : 참조자..
[C++] 포인터(Pointer)
·
C++
포인터란?컴퓨터의 메인 메모리는 여러 바이트로 구성되어 있고 각 바이트는 8비트의 정보를 저장 가능. 실행 가능한 프로그램은 코드(C프로그램의 명령어에 대응하는 기계어)와 데이터(프로그램의 변수들)로 구성. 각 변수는 메모리의 1개 이상의 바이트를 점유. 변수가 사용하는 주소의 첫번째 바이트 주소는 그 변수의 주소이다. 주소를 숫자로 표현할 수는 있지만, 값의 범위가 정수형의 범위와 다를 수 있으므로 일반적인 정수 변수에 저장할 수 없다. 때문에 포인터라는 변수를 만들어 주소를 저장한다. 예를 들면 포인터 변수 A에 변수 N의 주소를 저장한다. 이때 "A는 N을 가리킨다."(point to)라고 한다. 즉, 포인터는 주소를 저장하는 변수이다. 포인터 변수의 선언 : 식별자 앞에 asterisk(*)를 붙..

.menu_toolbar { display: none !important; }