본문 바로가기

전체 글

(236)
C++ 배우기 21(템플릿) 템플릿(template) 함수나 클래스를 여러 번 다시 작성하지 않도록, 어떤 자료형이던 받아서 사용할 수 있도록 만들어 놓은 틀이다. 오버로딩되서 사용되는 함수를 템플릿화 시켜서 사용할 수도 있다. template //템플릿 사용법 static void Shuffle(T* deck) { . . . } template의 typename을 T로 하겠다는 뜻이며, typename은 본인이 원하는 typename으로 바꿔서 사용할 수 있다. 그리고 위의 예시로 Shuffle() 함수를 템플릿화 시킬 건데, 여기서 중요한 건 매개변수이다. 매개변수의 자료형이 T인 것을 볼 수 있다. 이렇게 템플릿의 typename T로 자료형을 해두면, Shuffle() 함수를 호출할 때 받아오는 어떠한 값의 자료형이던 알아서..
C++ 배우기 20(헤더 / 소스 파일 나누기) 지금까지 하나의 .cpp 소스파일에 모두 코딩을 했다면, 이제는 여러 개로 나누어서 해야 한다. 새 항목 추가를 통해 C++파일을 만들어왔었는데, 이번엔 C++ 클래스를 생성해보자. 추가를 하면 클래스 추가 화면이 뜨면서 클래스 이름을 정하는데, 이름에 따라서 .h 과 .cpp 파일의 이름도 같이 바뀐다. 이제 솔루션 탐색기에 .h(헤더 파일)와 .cpp(소스 파일)가 생성된 것을 볼 수 있다. 이렇게 생성을 하면 클래스로 두 파일이 묶여있어서 관리하기가 편해진다. stdafx.h 이제부터 stdafx.h 헤더 파일을 자주 생성하게 될 텐데, 이 헤더 파일은 자주 쓰는 헤더 파일 여러 개를 stdafx.h 파일 안에 미리 넣어두고 컴파일을 해두어서 여러 번 불러오지 않아도 되는 편함이 있다. 위 방식처럼..
C++ 배우기 19(객체지향프로그래밍, class) 객체지향 프로그래밍(OOP) object-oriented programming의 줄임말이다. 프로그램 설계 방법 중 하나로, 명령형 프로그래밍에 속한다. 여기서 객체란, 함수(메서드)와 변수(데이터)의 묶음을 말하며, 이 객체들의 역할을 정의하여 객체들 간의 상호작용을 통해 프로그램을 만드는 것이라고 한다. 아래와 같이 만들었던 구조체 Card 같은 것들이 객체지향 프로그래밍이라 할 수 있다. struct Card { int num; string shape; void Print() { switch (num) { case A: cout
블랙잭 ver2 기존의 블랙잭에서 참가 인원 수 정할 수 있게 추가 A카드 뽑을 시, 1 또는 11 중 원하는 값으로 적용되게 추가(dealer는 무조건 1) 카드 덱 3뭉치로 셔플하는 것으로 변경 #include #include #include #include using namespace std; //매크로 #define SET 3 //숫자 열거형 enum Number { A = 1, J = 11, Q, K }; //문양 열거형 enum Shape { DIA, CLOVER, HEART, SPADE }; //카드 구조체 struct Card { int number; string shape; void Print() { switch (number) { case A: cout
C++ 테스트 후에... 보호되어 있는 글입니다.
블랙잭 벡터를 활용해서 만들어봤는데 아직 좀 쓰기 어색하다... #include #include #include #include using namespace std; //문양 열거형 enum SHAPE { SPADE, HEART, CLOVER, DIA }; //카드 구조체 struct Card { int number; string shape; }; //플레이어 구조체 struct Player { string name; vector hand; int add = 0; int money = 10000; }; //셔플 함수 void Shuffle(Card* deck) { for (int i = 0; i < 1000; i++) { int sour = rand() % 52; int dest = rand() % 52; Ca..
C++ 배우기 18(STL, vector) STL(Standard Template Library) 표준 템플릿 라이브러리라고 부르며, C++ 표준 라이브러리의 많은 부분에 영향을 끼쳤다고 한다. 프로그램에 필요한 자료구조와 알고리즘을 제공해준다. 우리가 자주 쓰던 std namespace의 안에 있다. 이 STL안에는 알고리즘, 컨테이너, 함수자, 반복자라는 4가지의 구성요소가 있다. 컨테이너(container) 특정 타입의 원소들을 담아 다루기 위한 객체, 자료를 저장하는 클래스 템플릿의 집합이다. 구현하려는 동작에서 가장 오버헤드가 걸릴 것을 고려하여 컨테이너를 선택하면 성능 향상에 도움이 된다. 순차 컨테이너와 연관 컨테이너로 나뉘게 되는데, 순차 컨테이너에는 array, vector, list, deque가 있고, 연관 컨테이너에는 set..
빙빙 돌아가는 회전 배열처럼... 메인 배열의 회전 후의 모습을 서브 배열에 미리 저장한 뒤, 다시 서브 배열 값을 다시 메인 배열에 옮기는 방식으로 처리했다. #include using namespace std; int main() { int size, input = 1; //배열 크기 입력 cout > size; //메인 2차원배열 선언 int** MainMatrix = new int* [size]; for (int i = 0; i < size; i++) { MainMatrix[i] = new int[size]; } //서브 2차원배열 선언 int** SubMatrix = new int* [size]; for (int i = 0; i < size; i++) { SubMatrix[i] = new int[size]; } //메인 2차원배..