목록프로그래밍/C++ (12)
Seung's Learning Record
c++ 11버전 이후로는 범위 기반 반복문을 사용할 수 있다. 범위 기반 반복문이란 시작과 끝점을 알려주지 않아도 알아서 처음부터 끝까지 순회를 해주는 반복문이다. 사용법 for(int elem : arr){ elem ++; cout
배열 배열이란 index와 그에 대응되는 데이터들로 이루어진 자료구조이며, 일반적으로 같은 타입의 데이터들이 순차적으로 메모리에 저장된다. 배열의 성질 O(1)에 k번째 원소를 확인/ 변경 가능 추가적으로 소모되는 메모리의 양, 즉 overhead가 거의 없음 Cache hit rate가 높음 메모리 상에 연속한 구간을 잡아야 해서 할당에 제약이 걸림 배열의 선언 당시 지정된 크기로 고정됨. => 사이즈를 벗어난 인덱스에 접근 시, 런타임 에러 발생 int arr1[5]={1,2,3}// 1,2,3,0,0 int arr2[]={1,2,3,4,5} //크기 5로 고정됨 int arr3[5]={0};// 원소가 모두 0으로 초기화 됨 int arr4[5];//원소가 모두 쓰레기값으로 초기화 됨 이때 배열의 ..
정렬을 아주 쉽게 도와주는 sort()함수는 헤더를 include 하여 사용할 수 있다. sort()함수는 C++ STL에서 제공하는 함수로써 각종 알고리즘 문제를 풀 때 자주 활용하는데 이 함수의 시간 복잡도는 nlogn이다. #include #include // sort()함수를 사용하기 위해 을 include 한다. using namespace std; int main(void){ int arr[5] = {3, 5, 9, 7, 8}; // 첫번째 인자 = 배열의 포인터 // 두번째 인자 = 배열의 포인터 + 배열의 크기 sort(arr, arr+5); //출력 for(int i=0; i
구현해야하는 모든 함수들을 main함수에 작성하면 어떻게 될까? 100줄이 넘지 않는 코드라면 큰 문제까지는 없을 것이다. 하지만 코드가 점점 늘어나고, 구현해야하는 기능들이 많아진다면 하나의 함수에 모두 작성하기가 어려울 것이다. 그 때문에 기능 등의 단위로 코드를 나누어 짜는것이 중요하며, 이를 위해 함수라는 것이 존재한다. 함수를 사용하면 코드의 재사용이 가능하기 때문에 훨씬 쉽고 효율적으로 코딩을 할 수 있다. 함수는 크게 두가지로 분류된다. 이미 다른사람들이 만들어놓은 라이브러리 함수와 직접 만들어 사용하는 사용자 정의 함수가 있다. 라이브러리 함수 라이브러리 함수는 미리 만들어져서 제공되는 함수로, printf()와 같은 것들이 있다. 라이브러리 함수를 사용하기 위해선 해당 함수의 정보가 들어..
코딩을 하다보면 여러 제어문들을 사용하게된다. 오늘은 그 중 하나인 조건문에 대해 정리해보자! if 문 if문의 구성은 아래와 같다. if( 조건문 ){ 명령문; } => if문의 필수부분으로 조건이 참일 경우 명령문을 실행한다. 조건이 거짓이면 다음 조건문으로 pass! else if ( 조건문 ){ 명령문; } => 판별해야할 조건이 여러가지일 경우 사용되며, 명령문 실행 조건은 if절과 동일하다. else { 명령문; } => 상위 모든 조건이 거짓일 경우, else절의 명령문이 실행된다. #include using namespace std; int main(){ int score; char grade; cout > score; if (score >= 90) grade = 'A'; else if (..
키보드를 통해 입력하는 것을 표준 입력, 데이터를 출력해내는 것을 표준 출력이라고 한다. c++에서는 이 표준 입출력이 어떻게 이루어지는지 확인해보자! #include c에선 표준 입출력 함수 사용을 위해 stdio.h 헤더파일을 include해준다. c++에서 이와 같은 역할을 해주는것이 바로 iostream이다. c++에서 사용자 정의 헤더를 제외한 표준 헤더 파일을 가져올땐 .h를 붙이지 않는점을 주의하자. cin, cout c언어의 표준 입출력 방식과 가장 큰 차이점은 아무래도 변수의 형식을 신경써도되지 않는다는 점이 아닐까싶다. c++의 표준 입출력 함수를 사용할 땐 사용하려는 변수의 자료형을 알지 못하여도 사용할 수 있다. 컴파일러가 가장 알맞은 자료형을 선택해서 적용해주기 때문에 사용자의 실..
c++은 풍부한 데이터형이 존재하며 이 덕분에 사용자는 선택의 폭이 넓지만 컴퓨터의 처리가 복잡해 질 수 있다. 이 때문에 C++은 아래와 같은 상황에서 데이터형의 변환 기능을 제공한다. 1. 특정 데이터형의 변수에 다른 데이터형의 값을 대입했을 때 2. 수식에 데이터형을 혼합하여 사용했을 때 3. 함수에 매개변수를 전달할 때 #include using namespace std; int main(){ int a = 1.2345; cout
다음은 원의 넓이를 구하는 간단한 코드이다. #include int main(){ int r = 3; float s = r * r * 3.141592; int r2 = 4; float s2 = r2 * r2 * 3.141592; return 0; } 해당 코드에선 반지름이 다른 두 원의 넓이를 구하기 위해 똑같은 코드가 반복되고 있다. 반복되는 두 코드 중 3.141592라는 수는 변하지 않는다. 만약 원의 개수가 만개가 넘어가게 될 경우 (함수를 쓰지 않는다는 전제하에) 3.141592 라는 수를 계속해서 반복 타이핑을 하게 될텐데 이 과정에서 오탈자가 발생할 가능성이 있다. 이를 방지하기 위해 우리는 상수라는 개념을 사용할 수 있다. #include int main(){ const float PIE ..
char형은 작은 문자형, 즉 한글자를 표현하고자 할 때 사용하는 변수형이다. c++에서는 문자를 표현할 때 ASCII코드를 사용한다. #include using namespace std; int main(){ int a = 77; char b = a; char c = 'M'; cout
자료형의 종류는 다양하지만 오늘은 정수형과 실수형에 대해서 작성해보고자 한다. 정수형은 소수부가 없는 수를 뜻하며, 실수형은 소수부가 존재하는 수를 뜻한다. 정수형 형식 메모리 크기(byte) 표현 가능한 범위 signed char 1 -128 ~ 0 ~ 127 signed short int 2 -32,768 ~ 0 ~ 32,767 signed int 4 -2,147,483,648 ~ 0 ~ 2,147,483,647 signed long int 4 -2,147,483,648 ~ 0 ~ 2,147,483,647 signed long long int 8 -9,223,372,036,854,775,808 ~ 0 ~ 9,223,372,036,854,775,807 unsigned char 1 0 ~ 255 unsi..