컴퓨터과학에서 함수와 관련된 부분을 보면 call by value(값에 의한 호출), call by reference(참조에 의한 호출)이라는 개념을 마주칠 때 있다. C / C++ 언어 계열은 포인터라는 엄청난 기능 덕분에 직접 메모리에 접근할 수 있기에 두 가지 방법 모두 사용이 가능하고, 다른 특징을 가진다. C++에서 사용되는 두 가지 방법을 간략하게 알아보도록 하자. 1. Call by Value : 값에 의한 호출 Call by value는 함수 호출 스택에서 매개변수를 저장하는 공간에 인자를 저장하는 방법으로 인자가 함수에게 전달되는 방식이다. 다른 말로, 인자로 넘겨진 값이 변경되어도 그 함수에서만 변경된다는 의미이다. 예제를 살펴보도록 하자. HTML 삽입 미리보기할 수 없는 소스 voi..
C++에서 프로그램을 종료할 때, 어떤 것을 써야 할까? 여러 방법이 있지만, 가장 표준적인 방법은 int main()과 함께 따라오는 return 0; 구문이다. HTML 삽입 미리보기할 수 없는 소스 그러나, 종료하는 방법 중 exit(0)를 활용하는 방법도 있다. 그럼, 다음과 같이 적으면 안되나? 왜 이 방법은 표준이 되지 않았을까? HTML 삽입 미리보기할 수 없는 소스 이번 포스팅에서는 이에 대하여 알아보고, 왜 return 0;가 표준이 되었는지 살펴보자. 1. return 0 의 뜻 C / C++에서 프로그램을 종료할 때, 무의식적으로 쓰는 구문은 main함수의 끝에 붙어있는 'return 0;' 이다. 이에 대한 뜻은, 프로그램을 끝내고 난 뒤 정수 '0'을 반환한다는 뜻이다. 근데, 이..
C++에서 반복문의 대명사 for문으로 배열이나 container에 순차적으로 접근할 수 있다. HTML 삽입 미리보기할 수 없는 소스 다만, 각 원소에 대한 작업을 쉽게 해 줄 수 있는 STL 함수가 있으니, std::for_each로 한 번에 처리하여보자. 1. for_each (※ https://www.cplusplus.com/reference/algorithm/for_each/에서 함수에 대한 정보를 확인할 수 있다.) C++의 알고리즘 관련 헤더 에는 for_each라는 함수는 다음과 같은 구조를 가진다. Function for_each(InputIterator first, InputIterator last, Function fn) for_each는 3개의 인자를 받는다. InputIterato..
코드를 작성하다 보면, 두 배열을 비교해야 하는 순간이 찾아온다. 두 배열의 원소가 같은 값인지, 아니면 다른 값인지 하여서 하나씩 비교해야 할 때, 우리는 다음과 같이 작성한다. vector 형인 두 배열 vec, vec2를 비교한다고 하고, 두 배열의 길이는 같다고 가정하자. HTML 삽입 미리보기할 수 없는 소스 이런! 단순 비교인데 코드를 7줄이니 먹는다는게 불편하다. 이를 한 번에 해결할 수 있는 함수 equal을 소개하도록 하겠다. 1. equal (※ https://www.cplusplus.com/reference/algorithm/equal/ 에서 함수에 대한 정보를 확인할 수 있다.) C++의 알고리즘 관련 여러 함수들이 담긴 헤더 에서의 equal 함수는 다음과 같은 두 가지 구조를 가..
종종 비트마스킹을 활용한 다이나믹 프로그래밍이나 요세푸스 문제, BFS 등등 배열을 반시계 방향으로 $k$번 회전시켜야 할 경우, 다음과 같은 방법을 활용하였다. 다음 코드는 vector vec를 $k = 1$만큼 회전시킨다고 할 때, C++의 함수 swap를 활용하면 다음과 같이 작성할 수 있다. HTML 삽입 미리보기할 수 없는 소스 만약, $k > 1$이라면 새로운 container를 만들어, 나머지 연산을 활용하여 회전 이후 해당하는 위치에 새로 데이터를 담을 수 있다. 그러나, 이 경우 불필요하게 배열의 크기만큼 새로운 공간을 할당해야 하여 불편하다. HTML 삽입 미리보기할 수 없는 소스 이 경우 한 줄의 코드로 위의 작업을 한 번에 할 수 있는 함수가 있으니, rotate 되시겠다. 1. r..
종종 누적 합(partial_sum) 알고리즘을 사용하기 위하여 각 부분별 부분 합을 구할 때가 많다. 그럴 때 우리는 이런식으로 코드를 작성하였다. vector nums의 처음부터 끝까지 각 부분별 누적합을 구하고, 이를 vector acc_nums에 담는다고 가정하자. HTML 삽입 미리보기할 수 없는 소스 위와 같은 코드를 단 두 줄의 코드로 압축할 수 있으면 믿을 것인가? 누적 합을 쉽게 위하여 C++에는 partial_sum이라는 함수가 정의되어 있다. 1. partial_sum (※ https://www.cplusplus.com/reference/numeric/partial_sum/ 에서 함수에 대한 정보를 확인할 수 있다.) C의 Sequence 관련 여러 함수들이 담긴 헤더 에서의 part..
- Total
- Today
- Yesterday
- 프로그래밍
- 함수
- 제어문
- Max
- Python
- MIN
- 헤더
- react
- Proactor
- bomblab
- 백준
- 구현
- effective async
- 사칙연산
- 알고리즘
- 시간복잡도
- JS
- equal
- BRONZE
- C
- GDSC
- CSAPP
- C++
- for
- 수학
- 문자열
- BOJ
- docker
- Network
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |