본문 바로가기
반응형

Programming/C, C++54

C++ STL 컨테이너 Vector의 재할당 확인하기 [C++/STL] 컨테이너 Vector의 재할당 확인하기 컨테이너는 공간이 부족하면 자동으로 공간을 재할당 한다.크기를 정해놓지 않고 사용하는 경우가 많은데 Vector에 자료가 추가되면서 재할당 하는 빈도수가 많은 것을 확인하였다. #include #include using namespace std;int main(){ vector vec; vector::iterator vecIter; vec.push_back(0); vecIter = vec.begin(); cout 실행 결과를 보면0번 데이터를 넣을 때의 주소는 00000149BB61D950 이다. 하지만 데이터를 추가하고 나서 주소가 빈번하게 바뀌는 것을 알 수 있다.1번 째 반복 0 : 00000149BB6203D0 1 : 00000149BB62.. 2022. 12. 11.
C++ STL List의 저장 공간 [C++/STL] List의 저장 공간 List는 양방향 연결 구조를 가지고 있다.데이터를 뒷 부분에 추가할 때 다음과 같은 일이 일어난다.1. 6번에 데이터를 추가한다.2. 빈 공간(임의 7번)을 찾는다.3. 6번에 2번에서 찾은 7번의 주소를 연결한다.4. 7번에 6번 주소를 연결한다.5. 7번을 마지막 원소로 지정한다.따라서 리스트는 빈 공간을 계속 찾아 연결하기 때문에 연속된 공간에 할당이 되지 않는다.예제로 확인한다.#include #include using namespace std;int main(){ list _list; list::iterator listIter; _list.push_back(0); listIter = _list.begin(); for (int i = 0; i 2022. 12. 11.
C++ STL 반복자(iterator) 사용법 [C++/STL] 반복자(iterator) 사용법iterator 는 포인터다.컨테이너에 저장되어 있는 원소들을 공통적인 방법으로 하나씩 접근할 수 있게 해준다.모든 컨테이너들은 iterator를 지원한다.  선언 방법STL타입::iterator 이름;vector::iterator veciter;vector::const_iterator veciter; vector.begin() = 시작 주소를 가리킴vector.end() = 제일 마지막 다음 값을 가리킴#include #include #include #include using namespace std;int main(){ vector vec; deque deq; list _list; vector::iterator vecIter; deque::iterato.. 2022. 12. 11.
C++ STL 컨테이너(Container) 사용법 [C++/STL] 컨테이너(Container) 사용법컨테이너 구성 요소1. 연속 컨테이너(Sequence Container) : 정렬되지 않은 컨테이너     - 벡터 (Vector), 디큐(Deque), 리스트(List)2. 연관 컨테이너(Associative Container) : 정렬 된 컨테이너      - 셋(Set), 멀티셋(MultiSet), 맵(Map), 멀티맵(MultiMap),         순서가 정해지지 않은(Unordered set, multiset, map, multimap)3. 컨테이너 어댑터(Container Adapter) : 컨테이너 위에서 돌아가는 자료구조      - 스택(Stack), 큐(Queue), 우선순위큐(Priority_Queue)  1. 연속 컨테이너(Se.. 2022. 12. 11.
C++ STL(Standard Template Library)란? [C++] STL(Standard Template Library)란? STL이란 Standard Template Library의 약자로 프로그래머가 자료구조와 알고리즘을 알지 못해도 사용할 수 있도록 제공되는 라이브러리다.* 자료구조를 직접 구현하지 않고 가져다 쓸 수 있게 준비해둔 것 표준 STL은 std namespace 안에 있다. STL은 컨테이너(Container) + 반복자(Iterator) + 알고리즘(Algorithm)의 구성요소를 제공한다. 컨테이너(Container)컨테이너는 크게 연속 컨테이너(Sequence Container), 연관 컨테이너(Associative Container), 컨테이너 어댑터(Container Adapter) 로 나뉜다. 연속 컨테이너(Sequence Con.. 2022. 12. 11.
C++ Vector 선언 및 초기화 [C/C++] Vector 선언 및 초기화 vector 이름vector v;- 비어있는 vector v를 생성합니다.vector v(5);- 기본값(0)으로 초기화 된 5개의 원소를 가지는 vector v를 생성합니다.vector v(5, 2);- 2로 초기화된 5개의 원소를 가지는 vector v를 생성합니다.vector v1(5, 2);vector v2(v1);- v2는 v1 vector를 복사해서 생성됩니다.v.assign(5, 2);- 2의 값으로 5개의 원소 할당.v.at(idx);- idx번째 원소를 참조합니다.- v[idx] 보다 속도는 느리지만, 범위를 점검하므로 안전합니다.v[idx];- idx 번째 원소를 참조합니다.- 범위를 점검하지 않으므로 속도가 v.at(idx)보다 빠릅니다.v.. 2022. 12. 8.
C++ Error(VS) "const char *" 형식의 값을 사용하여 "char *" 형식의 엔터티를 초기화할 수 없습니다. [C/C++] Error(VS) "const char *" 형식의 값을 사용하여 "char *" 형식의 엔터티를 초기화할 수 없습니다.위와 같은 코드가 비주얼 스튜디오 2015에서는 잘 되는데 2017부터는 오류가 발생한다. 해결책1. const를 붙인다.2. 프로젝트 > 속성 > C/C++ > 언어 > 준수모드 > 아니오 변경 2022. 12. 8.
C++ conio.h 키보드 입력 받기 [C/C++]  키보드 입력 받기의 kbhit함수는 버퍼에 값이 있으면 1, 없으면 0을 리턴한다.즉, 입력이 있으면 1, 없으면 0이다. 입력한 결과를 가져오는 함수는 _getch(); 인데, ASCII코드 값을 알고 있다면 사용이 수월하다. #include #include int main(){ while(true) { if(kbhit()) { int inputNum = _getch(); if(inputNum == 'a') printf("a를 입력했습니다."); } }} 2022. 12. 8.
C++ Windows.h 콘솔창 지우기, Sleep [C/C++] 콘솔창 지우기의 대표적인 기능은 콘솔창을 지우는 것과 스레드를 잠시 멈추는 것이 있다.화면이 지저분해지거나 갱신이 필요할 때 system("cls") 를 사용하면 깨끗하게 지워진다.#include #include int main(){ printf("Hello World"); system("cls"); return 0;} [C/C++]  Sleep()기능 중 프로그램을 잠시 멈추는 방법이 있다. Sleep() 함수다.#include #include int main(){ for (int i = 0; i 위 코드는 1초마다 i를 출력한다.Windows 환경에서 Sleep() 함수의 단위는 ms이다. 2022. 12. 8.
C++ 다차원 배열 [C/C++] 다차원 배열다차원 배열이란 2차원 이상의 배열을 의미하며, 배열 요소로 또 다른 배열을 가지는 배열을 의미한다. 2차원 배열은 배열의 요소로 1차원 배열을 가지는 배열이다. 2차원 배열의 문법은 다음과 같다.타입 배열이름[열의길이][행의길이];2차원 배열의 모습을 도식화 한 것이다.3차원 배열은 배열의 요소로 2차원 배열을 가지는 배열이다.2차원 배열이 평면이였다면 3차원 배열은 입체감을 가진다.4차원 배열도 만들수는 있지만, 사용하지 않을 뿐더러 이해하기도 어렵다. 2022. 12. 8.
C++ 슬라이딩 퍼즐 구현 [C/C++] 슬라이딩 퍼즐 구현슬라이드(슬라이딩) 퍼즐 게임 퍼즐 규칙1. N * N 크기의 퍼즐을 만든다.2. 0 ~ N * N - 1 까지 숫자를 채워 넣는다.3. 0번을 움직여서 상하좌우로 계속 움직여 섞는다.4. W, A, S, D 키를 눌러 0번을 제어해 1부터 순차적으로 맞추면 클리어 #include #include #include #include #include typedef unsigned int uint;#define MAX_PUZZLE_SIZE 3#define SHUFFLE_COUNT 100#define MAX_ARROW_INDEX 4enum Arrow{ NONE, UP, DOWN, LEFT, RIGHT,};void SetPuzzle(int arr[][MAX_PUZZLE_SIZE]);.. 2022. 12. 8.
C++ 빙고 게임 만들기 [C/C++] 빙고 게임 만들기빙고 규칙1. N * N 개의 2차원 형태의 빙고판을 만든다.2. 빙고판 안에 1 ~ M 사이의 숫자를 중복없이 랜덤으로 배치한다.3. 빙고판을 화면에 출력한다.4. 숫자를 입력 받아 빙고 결과와 일치한다면 빙고판에 있는 숫자를 공개한다.5. 빙고의 개수가 5개 이상이면 클리어6. 빙고는 가로, 세로, 대각선을 포함한다. // 빙고게임#include #include #include typedef unsigned int uint;#define BINGO_SIZE 5#define MAX_BINGO_COUNT 5#define MAX_ATTEMP_COUNT 25#define MIN_LIMIT_NUBER 1#define MAX_LIMIT_NUBER 25int GetRandomRang.. 2022. 12. 8.
반응형