Programming/C++
-
C++ 2차원 배열을 특정 값으로 초기화 하는 방법
2차원 배열을 특정 값으로 초기화 하는 방법들어가며C++에서 2차원 배열을 특정 값으로 초기화 하는 방법에 대해 알아보자.int ary[50][50]; 방법방법 ① : 2중 for 문 사용하기2중 for 문으로 하나하나씩 값을 집어 넣는 아주 기초적인 방법이다.int value = 1; // 초기화 하고자 하는 값for (int i = 0; i 방법 ② : memset 함수 사용하기memset 함수를 사용하여 값을 초기화 하는 방법이다.단, memset 함수를 사용할 경우, 0 또는 -1로만 초기화 할 수 있다. 함수를 사용하기 위해서는 (또는 ) 헤더를 불러와야 한다.memset(시작주소, 값, 크기);#include memset(ary, 0, sizeof(ary)); ..
0 2023.01.26 -
C++ 2차원 배열 동적 할당 방법 (new 연산자)
2차원 배열 동적 할당 방법 (new 연산자)들어가며C++에서 new 연산자를 이용하여 쉽게 2차원 배열을 동적 할당할 수 있다. 방법동적 할당int **ary;// 2차원 배열 동적 할당ary = new int*[row];for (int i = 0; i 동적 할당 해제// 2차원 배열 동적 할당 해제for (int i = 0; i 예제#include using namespace std;int row, col, **ary;void Input(int **a, int r, int c) { for (int i = 0; i > a[i][j]; } } cout > row; cout > col; // 2차원 배열 동적 할당 ary = new int*[ro..
0 2022.12.08 -
C++ multiset(중복 집합)
multiset(중복 집합) 특징연관 컨테이너(Associative Container) 중 하나이다.연관 컨테이너에는 set, multiset, map, multimap 이 있다.set과 비슷하지만, 중복된 키(Key)를 넣을 수 있다는 차이점이 있다.삽입된 요소들은 기본적으로 오름차순(less)으로 정렬된다. 헤더 파일multiset을 사용하려면 다음의 헤더 파일을 불러와야 한다.#include 멤버 함수 사용 방법set과 사용 방법이 비슷하다.바로가기 : https://dev-astra.tistory.com/247 [C++] set(집합)set(집합) 특징 연관 컨테이너(Associative Container) 중 하나이다. 연관 컨테이너에는 set, multiset, map, multimap 이 ..
0 2022.11.09 -
C++ set(집합)
set(집합) 특징연관 컨테이너(Associative Container) 중 하나이다.연관 컨테이너에는 set, multiset, map, multimap 이 있다.특정 순서에 따라 고유한 요소를 저장하는 컨테이너이다.기본적으로 요소들은 오름차순(less)으로 정렬되어 삽입된다.중복되는 요소는 없고, 오로지 희소한(Unique) 값만 저장된다.map과 거의 동일하지만, set은 map과 다르게 키(Key)와 값(Value)이 같다고 생각하면 된다.키(Key)라 불리는 요소들의 집합으로 이루어진 컨테이너라고 생각하면 된다.노드 기반 컨테이너이며, 균형 이진 트리로 구현되어 있다.이터레이터(Iterator)는 자동으로 중위 순회(Inordered Traversal)를 통하여 순서대로 키(Key)를 출력한다...
0 2022.11.08 -
C++ multimap(멀티 맵)
multimap(멀티 맵) 특징map과 거의 동일하지만, 키(Key) 값이 중복 가능한 컨테이너 키(Key)와 값(Value)이 삽입될 때, 키(Key)가 정렬이 되면서 삽입된다. 헤더 파일멀티 맵을 사용하려면 다음의 헤더 파일을 불러와야 한다.#include 멤버 함수 사용 방법map과 사용 방법이 비슷하다.바로가기 : https://dev-astra.tistory.com/244 [C++] 맵(Map)맵(Map) 특징 연관 컨테이너(Associative Container) 중 하나이다. 연관 컨테이너에는 set, multiset, map, multimap 이 있다. string : int 형태로 값을 할당해야 할 때 맵을 사용한다. 키(Key)와 값(Value) 형태로 이루dev-astra.tisto..
0 2022.11.08 -
C++ unordered_map
unordered_map 특징map보다 더 빠른 탐색을 하기 위한 컨테이너해시 테이블(Hash Table)을 기반으로 구현되었다.삽입, 삭제, 탐색에 대해서 O(1) 정도의 시간 복잡도를 가진다. 가장 최악의 경우 O(N) 정도의 시간 복잡도를 가진다.map의 삽입, 삭제 탐색 시간 복잡도는 O(logn) 이다.중복된 데이터를 허용하지 않는다.map에 비해 데이터가 많을 경우 월등히 좋은 성능을 보인다.하지만, 키(Key)가 유사한 데이터가 많을 경우, 해시 충돌로 인해 성능이 떨어질 수도 있다. 헤더 파일unordered_map을 사용하려면 다음의 헤더 파일을 불러와야 한다.#include 멤버 함수 사용 방법요소가 삽입될 때 키(Key)가 정렬되지 않는다는 것을 빼고는 map과 사용..
0 2022.11.08 -
C++ map(맵)
map(맵) 특징연관 컨테이너(Associative Container) 중 하나이다.연관 컨테이너에는 set, multiset, map, multimap 이 있다.string : int 형태로 값을 할당해야 할 때 맵을 사용한다.키(Key)와 값(Value) 형태로 이루어져 있고, 레드-블랙 트리(Red-Black Tree)라는 구조를 내장하고 있다.노드 기반으로 이루어져 있고, 균형 이진 트리 구조이다.pair 객체 형태로 키(Key)와 값(Value)이 저장된다.Key는 고유한 값이므로 중복이 불가능하다.중복 Key를 사용하려면 multimap을 사용하면 된다.삽입, 삭제, 탐색에 대해서 O(logN) 정도의 시간 복잡도를 가진다.집합(Set)과 마찬가지로 삽입이 되면서 자동으로 정렬이 된다.데이..
0 2022.11.08 -
C++ pair(페어)와 tuple(튜플)
pair(페어)와 tuple(튜플) pair(페어)개념사용자가 지정한 2개의 타입의 데이터를 저장하기 위해 사용되는 클래스서로 연관된 2개의 데이터를 한 쌍으로 묶어서 다룰 때 사용하면 편리하다.구조체(struct) 대신 편리하게 2개의 데이터를 관리할 수 있다. 헤더 파일페어(pair)를 사용하려면 다음의 헤더를 불러와야 한다.#include 하지만, , 헤더를 사용할 경우, 헤더가 포함되어 있어 따로 불러와 주지 않아도 된다.#include // 헤더 포함#include // 헤더 포함 형태페어(pair)의 형태는 다음과 같다. template struct pair;T1에 첫 번째 인자를, T2에 두 번째 인자를 넣어주면 된다. 사용 방법초기화다음과 같이 페어(pair)를 초기..
0 2022.11.03 -
C++ lower_bound(), upper_bound() ; 이진 탐색(Binary Search)
lower_bound(), upper_bound() ; 이진 탐색(Binary Search) 소개이진 탐색(Binary Search)으로 원소를 탐색하는 함수시간 복잡도가 O(log2N) 으로, 빠른 속도로 탐색을 수행할 수 있다.탐색을 진행할 컨테이너는 반드시 오름차순으로 정렬되어 있어야 한다. 필요한 헤더#include 형식찾은 값(val)의 주소를 Iterator 형으로 반환한다.lower_bound(ForwardIterator first, ForwardIterator last, const T& val)lower_bound(ForwardIterator first, ForwardIterator last, const T& val) lower_bound()찾으려는 키 값보다 크거나 같은(이..
0 2022.11.01 -
C++ sort 함수를 이용하여 오름차순/내림차순 정렬하는 방법
sort 함수를 이용하여 오름차순/내림차순 정렬하는 방법 sort() 함수배열 등 컨테이너들의 요소를 정렬하는 함수보통 array나 vector를 정렬할 때 쓰인다. 필요한 헤더 헤더를 불러와야 사용할 수 있다.#include 기본 포맷default (1)template void sort (RandomAccessIterator first, RandomAccessIterator last);custom (2)template void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);기본적으로 이터레이터 범위와 Compare 파라미터를 통해 콜백 함수(Callback Function)를 선택적으로 처리할 수 있..
0 2022.10.27 -
C/C++ 현재 날짜/시간 원하는 형태로 출력하기
현재 날짜/시간 원하는 형태로 출력하기 ① 헤더 불러오기C#include C++#include ② time() 함수를 호출하여 현재의 날짜/시간 얻기time_t timer = time(NULL);time 함수는 time_t 타입을 결과값으로 반환한다.결과값은 유닉스 운영체제가 공식 출시한 1970년 1월 1일 0시 0분 0초를 기점으로 현재까지 흐른 시간을 초 단위로 나타낸다. ③ localtime() 함수를 호출하여 포맷 변환하기struct tm* t = localtime(&timer);time 함수가 리턴해주는 값은 시스템에 따라 32비트나 64비트 정수이기 때문에 그대로 사용하기에는 무리가 있다.따라서 사용하고자 하는 형태에 맞게끔 포맷팅을 해주어야 한다.이 과정을 localtime 함수를 사용..
0 2022.10.20 -
C++ bits/stdc++.h
bits/stdc++.h C++의 표준 라이브러리가 모두 포함된 헤더이다.이 헤더를 사용하면 iostream, cstdio 등 여러 라이브러리에 들어있는 함수 등을 하나하나 신경 쓸 필요 없이 코딩에 집중할 수 있다.몇몇 코딩 테스트(삼성 코딩 테스트 등)에서는 이 헤더를 쓸 수 없고 공지에서 주어지는 라이브러리만을 써야 하기 때문에 주의해야 한다. 사용 방법코드 복사하기아래의 링크에 있는 코드들을 모두 복사한다.https://raw.githubusercontent.com/wnghdcjfe/wnghdcjfe.github.io/master/bits/stdc++.h코드를 보면 여러 헤더들이 include 되어있는 것을 확인할 수 있다. 더보기 #ifndef _GLIBCXX_NO_ASSERT #includ..
1 2022.10.18 -
C++ 동적 할당(Dynamic Allocation) 방법
C++에서의 동적 할당 방법 동적 할당(Dynamic Allocation)실행 시간 동안 사용할 메모리 공간을 할당하는 것동적 메모리 할당을 이용하면 배열의 크기를 가변적으로 생성할 수 있다.메모리 영역 중 힙(Heap) 영역에 저장된다.사용자가 원할 때 메모리에 등록시키고, 원할 때 해제시킬 수 있다.동적 할당한 메모리를 해제하지 않을 경우 메모리 누수가 발생한다.프로그램을 종료해도 메모리에 계속해서 상주한다.동적 할당은 C 방식과 C++ 방식으로 나뉜다. C 기반 동적 할당C 기반 동적 할당 방법으로는 malloc(), calloc() 함수를 이용한 방법이 있다.동적 할당을 해제할 때는 free() 함수를 사용한다. C++ 기반 동적 할당C++ 에서는 new 연산자를 사용하여 동적 할당을 수행할 수 ..
0 2022.08.24 -
C++ cin.ignore()
cin.ignore() cin.ignore() 함수는 입력 버퍼를 자동으로 비우도록 설정하기 위해 사용된다.C 언어의 fflush(stdin) 함수와 비슷한 역할을 수행한다. 사용 예#include #include using namespace std;int main() { int val; string str; cin >> val; getline(cin, str); cout 11 위의 예시 코드를 실행해 보면 예상과 달리 입력받은 정수만 출력되고 프로그램이 종료된다. 이런 현상이 발생하는 이유는 표준 입력 버퍼에 개행문자(\n)가 남아 있기 때문이다.getline() 코드 앞에 cin.ignore() 함수로 버퍼를 비워(Clear)주면 이 문제가 해결된다.#incl..
0 2022.07.09