코딩을 하거나 문제를 풀 때 배열을 선언하고, 그 안에 초기값들을 채워야 할 경우가 많습니다. 매번 초기화를 하거나 배열이 2,3차원이 되면 코드가 불필요하게 길어지고 가독성이 떨어지는 경우가 있습니다. C와 C++에서는 이를 방지하기 위해 memset과 fill 두 가지의 배열 초기화 함수를 제공합니다. 변수 초기화를 안한다면? 일반적으로 지역변수에 배열을 선언하고 초기화 해주지 않으면 다음과 같은 쓰레기 값이 채워져 있습니다. 따라서 초기화 작업이 반드시 필요합니다. #include using namespace std; int main(){ int arr[10]; bool arr2[10]; for(int i=0 ; i HTML 삽입 미리보기할 수 없는 소스 memset은 약 331초, fill은 약 ..
🧑🏻💻 Fac si facis
pair 정의 first, second 라는 멤버변수를 가지는 클래스이며 두가지 값을 담아야 할 때 사용합니다. 주로 이차원 배열의 인덱스 혹은 이차원 좌표 평면에서의 좌표를 저장하는데 사용됩니다. 정점 번호와 해당 정점 번호까지의 최단 거리를 묶어서 저장해야 하는 경우도 사용됩니다. 사용 예제 vector 객체에 pair 컨테이너를 통해 값 저장하는 방법 #include using namespace std; vector vp1; vector vp2; int main(){ ios_base::sync_with_stdio(false); // make_pair를 통한 삽입 vp1.push_back(make_pair(2, 4)); // 반복문을 통한 일반 삽입 cin >> n; for(int i=0 ; i
벡터 메모리 heap에 동적 할당되는 자료의 길이를 변경할 수 있는 배열입니다. 쉽게 말해 자동으로 메모리가 할당되는 배열입니다. 일반 배열과 동일하게 연속적인 메모리 공간에 저장합니다. (개별 원소에 대한 접근 속도가 빠름) iterator 뿐 아니라 index 로도 접근이 가능합니다. 컨테이너 끝에서 삽입 / 제거하는 속도가 빠릅니다. 중간의 값을 삽입하거나 삭제할 수도 있지만 배열 기반이므로 빈번하게 일어난다면 비효율적입니다. 동적으로 확장 및 축소가 가능한 Dynamic Array로 구현되어 있습니다. vector 생성자와 연산자 더보기 vector v - 비어있는 vector v 를 생성합니다. vector v(5) - 기본 값(0)으로 초기화 된 5개의 원소를 가지는 vector v를 생성합..
(C / C++ 에서) 알고리즘 문제를 풀 때 다음의 정수 자료형의 크기 및 범위에 대한 지식이 필요합니다. 자료형 크기 범위 비고 char unsigned char 1byte, 8bit -128 ~ 127 unsigned char 1byte, 8bit 0 ~ 255 short short int 2byte, 16bit -32,768 ~ 32,767 int 생략 가능 unsigned short unsighed short int 2byte, 16bit 0 ~ 65,535 int 생략 가능 int signed int long long int signed long signed long int 4byte, 32bit -2,147,483,648 ~ 2,147,483,547 (약 -21억 ~ 21억) int 생략 가..
코드를 작성하다 보면 프로그램 변수 값을 1 증가, 감소 시키는 상황에 ++, -- 연산자를 자주 사용합니다. 이 연산자는 증가 / 감소 연산자라고 불리며, 전위(++n), 후위(n--) 로 나뉩니다. n++ , n-- 모두 n = n + 1 과 n += 1 과 같은 기능을 수행합니다. 다만 연산 결과 값은 전위, 후위냐에 따라서 달라지므로 유의하여 작성해주어야 합니다. 전위 (++n) 연산자 ++ 가 피연산자 n보다 앞에 위치할 때 전위라 하고 1 증가된 값이 연산 결과 값입니다. 후위 (n++) 연산자 ++가 피연산자 n보다 뒤에 위치할 때 후위라 하고 1 증가하기 전 값이 연산 결과 값입니다. 연산 결과 값은 '증감 연산 그 자체의 값' 다시 말해 'n++', '++n' 그 자체의 결과 값을 말한다..