본문 바로가기

Cpp

(35)
STL MAP map 각 노드가 key와 value 쌍으로 이루어진 트리입니다. 특히, 중복을 허용하지 않습니다. 따라서 map은 first, second가 있는 pair 객체로 저장되는 데 first- key로 second- value로 저장됩니다. C++의 map의 내부 구현은 검색, 삽입, 삭제가 O(logn) 인 레드블랙트리로 구성되어 있습니다. 형태 map 변수이름; 정렬 map 은 자료를 저장할 때 내부에서 자동으로 정렬한다. key 를 기준으로 정렬하고 오름차순이다. 내림차순으로 하고 싶다면, 1. map 변수이름;\ 2. int 형 등의 데이터를 내림차순으로 정렬할 경우, 데이터에 - 를 붙여 삽입해주면 내림차순 정렬이 된다. 등의 방법이 있다. map 을 사용하려면 #include 을 추가해야한다. m..
deque(double ended queue) vector의 단점을 보완하기 위해 만든 컨테이너이다. 배열기반의 구조. vector는 새로운 원소가 추가 될 때 메모리 재할당 후 이전 원소를 복사하기 때문에, 삽입 때 성능이 저하 되는 단점이 있다. deque 는 vector 의 단점을 보완하기 위해서 여러개의 메모리 블록을 할당하고 하나의 블록처럼 여기는 기능이 있다. deque 는 메모리가 부족할 때 마다 일정한 크기의 새로운 메모리 블록을 할당한다. 따라서 이전 원소를 복사하지 않는다. 데이터의 삽입 삭제가 front 와 back 에서 이루어 질 수 있다. deque 는 중간 원소도 삽입 삭제가 가능하다. deque 의 생성자 및 연산자 deque dq; - 비어있는 deque dq 를 생성합니다. deque dq(10); - default(0..
비트 연산자 & (비트 AND 연산자) 비트 AND 연산자는 대응되는 두 비트가 모두 1일 때만 1을 반환하며, 다른 경우는 모두 0을 반환합니다 | (비트 OR 연산자) 비트 OR 연산자는 대응되는 두 비트 중 하나라도 1이면 1을 반환하며, 두 비트가 모두 0일 때만 0을 반환합니다. ^ (비트 XOR 연산자) 비트 XOR 연산자는 대응되는 두 비트가 서로 다르면 1을 반환하고, 서로 같으면 0을 반환합니다. ~ (비트 NOT 연산자) 비트 NOT 연산자는 해당 비트가 1이면 0을 반환하고, 0이면 1을 반환합니다. 출처 : 코딩의 시작, TCP School 코딩교육 티씨피스쿨 4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등 tcpschool.com
더블 버퍼링 그래픽 객체에 이미지를 그릴 때 사용하는 기법이다. 더블 버퍼링이란 싱글 버퍼링으로 화면을 그릴 경우 데이터를 저장하는 동안에는 다음 그림의 데이터를 전송할 수 없기 때문에 지우고 그리고 지우고를 반복 할 경우 필연적으로 발생하는 깜빡임 등의 상황을 막기 위해서 사용되는 기법입니다. API를 시작하다보면 비트맵 이미지를 사용하게 된다. 그 때 이미지들이 전환되면서 영상처럼 부드럽게 움직일 거라 생각하지만 실제로 이미지들이 움직일 때마다 화면이 깜빡이는 현상이 눈에 들어온다. 쉽게 말하자면 아래와 같은 상황인 것이다. ▶ 게임 캐릭터이미지를 구현할 때 이미지를 움직이게 하고 싶다. 그러나 캐릭터가 띄엄띄엄 움직임과 동시에 깜빡거리는 화면 때문에 게임할 맛이 안난다. 그 이유는 컴퓨터가 이미지를 지웠다가 새..
인터페이스 인터페이스는 특정 기능을 구현할 것을 약속한 추상 형식을 말합니다. c++에서는 순수 가상 함수를 이용하여 정의할 수 있습니다. 인터페이스는 멤버 필드나 구체적으로 구현한 함수를 갖지 않고 특정 기능을 약속한 함수만 가지게 됩니다. 그리고 모든 멤버는 사용하는 개발자와의 약속으로 전부 public 으로 접근 지정합니다. c++ 에서는 구조체가 디폴트 제한자가 public 이기 때문에 구조체를 이용하여 인터페이스를 정의하는 경우도 있습니다. 개발자들의 약속으로 인터페이스의 이름은 I로 시작합니다. 당연히 객체 생성이 불가능하며 인터페이스를 상속받은 파생 클래스도 인터페이스의 순수 가상함수를 재정의 해야만 객체를 생성할 수 있습니다. 추상 클래스와 인터페이스의 차이점 1. 인터페이스는 상태나 구현을 포함할 ..
추상클래스 하나 이상의 순수 가상 함수를 포함하는 클래스를 추상 클래스라고 한다. 이러한 추상 클래스는 객체 지향 프로그래밍에서 중요한 특징인 다형성을 가진 함수의 집합을 정의할 수 있게 해줍니다. 즉, 반드시 사용되어야하는 멤버 함수를 추상 클래스에 순수 가상 함수로 선언해 놓으면, 이 클래스로부터 파생된 모든 클래스는 이 가상함수를 반드시 재정의해야 합니다. 추상 클래스는 정의 되어있지 않은 순수 가상 함수를 포함하므로, 객체를 만들 수 없습니다.(인스턴스 불가) 즉, 파생 클래스에서 순수 가상 함수를 모두 오버라이딩하고 나서야 비로소 파생 클래스의 객체를 생성할 수 있습니다. 하지만 추상 클래스의 포인터와 참조는 바로 사용할 수 있습니다. 이를 이용하여 업캐스팅형식의 객체를 선언할 수도 있습니다. 추상 클래스..
외부링크 내부링크 static과 extern 키워드를 이용한 내부/외부 링크 변수는 스코프(scope)와 주기(duration) 외에도 링크(linkage)라는 세 번째 속성이 있다. 링크는 같은 이름의 여러 식별자가 같은 식별자를 참조하는지를 결정한다. 링크가 없는 변수는 정의된 제한된 범위에서만 참조할 수 있다. 지역 변수가 링크가 없는 변수의 예이다. 이름은 같지만 다른 함수에서 정의된 지역 변수는 링크가 없다. 내부 링크가 있는 변수를 static 변수라고 한다. static 변수는 변수가 정의된 소스 파일 내에서 어디서나 접근할 수 있지만, 소스 파일 외부에서는 참조할 수 없다. 외부 링크가 있는 변수를 extern 변수라고 한다. extern 변수는 정의된 소스 파일과 다른 소스 파일 모두에서 접근할 수 있다...
변수주기 변수주기 변수의 스코프(scope)에 따라 변수에 접근할 수 있는 위치가 결정된다. 변수의 주기(duration)는 변수가 생성되고 소멸하는 위치를 결정한다. 이 두 개념은 밀접하게 관련돼있다. 함수 내부에 정의된 변수를 지역 변수(local variable)라고 한다. 지역 변수는 자동 주기(auto duration)를 가지고 있다. 정의되는 시점에서 생성되고 초기화되며, 정의된 블록이 끝나는 지점에서 소멸한다. 또한, 지역 변수는 지역 스코프(블록 스코프라고도 불린다)를 가진다. 이는 선언 시점에서 스코프에 들어가고 정의된 블록 끝에서 소크프에서 벗어나는 걸 의미한다. 스코프 내에서만 변수에 접근할 수 있다. 자동 주기(automatic duration)인 변수는 정의 지점에서 생성되며, 정의된 블록..