C 스타일의 난수 생성하기srand 함수를 사용하여 랜덤 시드를 구하고, 그 시드 값을 time 함수를 사용하여 현재 시간을 기준으로 하여고정된 값이 아닌, 계속 변화하는 값을 넣어 난수를 생성한다. 단점은 시드값이 너무 천천히 변한다는 점과, 랜덤값을 균등하게 생성하지 않는다는 점이다.그리고, 결론적으로 rand() 함수 자체도 그다지 뛰어나지 않은 함수라 웬만하면 C++을 사용하자. 생성될 난수에 최대 범위로 나눈 값을 +1 해주면 1~범위 까지의 값을 추출해 낼 수 있다.#include #include using namespace std;int main() { // 시간을 기준으로 시드값 설정 srand(static_cast(time(nullptr))); // rand() 함수로 나온 ..
📕Programming/📝C/C++
인라인 함수란?인라인 함수를 설명하기 위해서는 먼저, 오버헤드(Overhead)를 알아야 한다.오버헤드란 어떤 작업을 수행하는 데 필요한 추가적인 처리나 리소스를 의미한다. 함수를 호출하게 되면, 매개변수 전달, 반환 주소 저장, 지역 변수 할당 등의 추가적인 작업을 수행하게 된다.int Add(int a, int b) //매개변수를 스택에 저장{ return a + b; //리턴 값을 임시 저장소에 저장}int num;num = Add(5,1); //함수 호출 시점, 이곳의 주소값을 스택에 저장 인라인 함수는 이런 함수 호출 오버헤드를 감소시키기 위해 만들어진 기능이다.이는 함수 호출 과정을 거치지 않고, 함수의 모든 코드를 호출된 자리에 바로 삽입하는 방식의 함수이다. 인라인 ..
C++ 표준 라이브러리인 algorithm 라이브러리는 원소들에 대해 작업할 수 있는 여러 가지 함수들을 정의하고 있다. 사용하려면 헤더를 추가해야 한다.std:: 을 생략하려면 using namespace std; 추가 find()범위 안에 원소들 중 값이 일치하는 원소를 찾는다.// find(first, last, value)vector::iterator itFind = find(v.begin(), v.end(), number); find_if()범위 안에 원소들 중 조건과 일치하는 원소를 찾는다.// find(first, last, pred)class CanDivideBy11{public: bool operator()(int n) { return (n % 11) == 0; }};vector..
객체 지향 프로그래밍(OOP, Object-Oriented Programming) - 객체 지향 프로그래밍에서는 모든 데이터를 객체로 취급한다. - 객체란? 플레이어, 몬스터, Game Room 등 - 또한, 이와 같은 객체를 만들어내기 위한 틀과 같은 개념이 바로 클래스(Class)이다. 객체 지향 프로그래밍의 특징 - 객체 지향 프로그래밍이 가지는 특징은 다음과 같다. 1. 상속성 2. 은닉성(캡슐화) 3. 다형성 -------------------------------------------------------------------------------------------------------------------------------- 클래스(Class) - C++에서 클래스란 구조체의 상위 호..
문자열(string)이란 일련의 연속된 문자(character)들의 집합이다. C++에서는 이러한 문자열을 C언어 스타일의 문자열, string 클래스를 이용한 문자열 이렇게 두 가지 방법으로 생성할 수 있다. -------------------------------------------------------------------------------------------------------------------------------- 1. 널(NULL) 문자 C++에서 문자열 변수는 문자열의 끝을 프로그램에 따로 알려주어야 한다. 그래야만 프로그램이 실제 문자열에 속한 값과 그 외에 쓰레깃값으로 구분할 수 있다. 따라서 문자열이 끝나면, 문자열의 끝을 의미하는 문자를 하나 더 삽입해 준다. 이러한 문..
주소값의 이해 포인터를 배우기 앞서 포인터를 이해하기 위해서는 주소 값이 뭔지 알아야 한다. 변수 등에서 어떤 데이터를 저장한다고 선언을 하면 메모리에서 저장할 공간을 할당받는다. 그럼 이 데이터를 다른 곳에서 사용하려고 호출하기 위해서는 이 데이터가 메모리의 어느 부분에 저장되어 있는지를 알아야 한다. 이때, 데이터가 저장된 메모리의 시작 주소를 주소 값이라고 한다. 예를 들어 int형 변수를 하나 선언했다면, 메모리 어딘가에 4bytes 크기로 공간이 할당될 것이다. (0x01, 0x02, 0x03, 0x04) 이렇게 할당 받았다면, 이 공간의 시작 주소인 0x01이 해당 변수를 가리키는 주소 값이 된다. -----------------------------------------------------..
배열이란? 배열(array)은 같은 타입의 변수들로 이루어진 유한 집합으로 정의할 수 있다. 배열을 구성하는 각각의 값을 배열 요소(element)라고 하며, 배열에서의 위치를 가리키는 숫자를 인덱스(index)라고 한다. 배열은 같은 종류의 데이터를 많이 다뤄야 하는 경우에 사용할 수 있는 가장 기본적인 자료 구조이다. 배열은 선언되는 형식에 따라 1차원 배열, 2차원 배열뿐만 아니라 그 이상의 다차원 배열로도 선언할 수 있다. 하지만 현실적으로 이해할만한 2차원 배열까지가 많이 사용된다. C++에서 인덱스는 언제나 0부터 시작하며, 0을 포함한 양의 정수만을 가질 수 있다. 배열의 길이를 선언할 때는 반드시 상수를 사용해야 한다. ---------------------------------------..
반복문 반복문이란 똑같은 명령을 일정 횟수만큼 반복하여 수행하도록 제어하는 명령문이다. 프로그램이 처리하는 대부분의 코드는 반복적인 형태가 많으므로, 가장 많이 사용되는 제어문 중 하나이다. -------------------------------------------------------------------------------------------------------------------------------- 1. while 문 while 문은 특정 조건을 만족할 때까지 계속해서 주어진 명령문을 반복 실행한다. while 문은 우선 조건식이 참(true)인지를 판단하여, 참이면 내부의 명령문을 실행한다. 내부의 명령문을 전부 실행하고 나면, 다시 조건식으로 돌아와 또 한 번 참인지를 판단한다. ..