![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcevvBj%2Fbtq7C3D0gUd%2FA48r7eNbRx0cNVh8r2Yrkk%2Fimg.png)
[C++] 예제로 알아보는 std::pair, std::tuple
2021. 6. 20. 20:09
C++/공부
std::pair https://en.cppreference.com/w/cpp/utility/pair std::pair - cppreference.com template struct pair; std::pair is a class template that provides a way to store two heterogeneous objects as a single unit. A pair is a specific case of a std::tuple with two elements. If neither T1 nor T2 is a possibly c en.cppreference.com #include #include #include std::pair Login(int ..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoGe87%2FbtqGeaVQTX0%2FClNKn7gdQ8n6tkI8mvr4QK%2Fimg.png)
[C++] <functional>을 이용한 버튼 구현
2020. 8. 2. 23:07
C++/공부
UI 구현 시 이곳저곳에 버튼이 참 많이 들어간다. 이 경우 차라리 하나의 클래스로 뽑아서, 버튼이 클릭되면 지정한 함수를 호출하는 기능을 하게끔 구현하려고 하였다. 함수 포인터를 이용하니 static 선언이 없으면 불가능했으며, static으로 선언된 멤버 함수에서는 멤버 변수 및 다른 멤버 함수에 접근하는 게 불가능하기 때문에 원하는 동작을 원활하게 실행할 수가 없었다. std::function, std::bind 나의 경우 의 std::function, std::bind를 이용하였다. class button { // ... function _callbackFunction; } 생성자나 함수를 이용하여 _callbackFunction을 초기화하면 된다. 이때 인스턴스의 바인딩이 필요함에 주의한다. _..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXBD5O%2FbtqErKkwhrL%2FdYac0pf80bFPFCI8JRqiM0%2Fimg.png)
[C++] 전방 선언에 관하여
2020. 5. 26. 22:43
C++/공부
전방 선언: 선 실행 후 연결 전방 선언은 불필요한 헤더 파일이 복잡하게 포함되는 것을 방지하여, 결과적으로는 컴파일 속도를 향상시킵니다. 객체 수가 많다는 가정하에 빌드 속도 차이가 확연하게 납니다. 예제와 함께 알아보기 예를 들어 클래스 A를 지갑, 클래스 B를 통장이라고 했을 때, 클래스 AB는 지갑과 통장에 모두 접근할 수 있는 클래스입니다. 따라서 지갑에 있는 돈을 꺼내어 사용하기도 하고, 통장에 있는 돈을 꺼내서 지갑에 넣기도(또는 그 반대) 하겠죠? 아무런 기능도 하지 않는 클래스들을 만들어, 예시와 함께 보겠습니다. AB.h #pragma once #include "A.h" #include "B.h" class AB { }; A.h #pragma once class A { }; B.h #p..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq4dqx%2FbtqEh7T2pKi%2F2dTpAFGPVykr9VoR3AS7J1%2Fimg.png)
[C++] 포인터를 이용하여 for문 별 찍기
2020. 5. 17. 18:08
C++/공부
코드 #include using namespace std; int main() { const char* star= "*****"; const char* space= " "; for (int i = 0; i < 5; i++) { cout
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fba3ORR%2FbtqEgQ6CAlG%2FdcjdRjr7Lxsf4ahj5HnS3k%2Fimg.png)
[C++] 셔플(Shuffle) 알고리즘
2020. 5. 16. 21:19
C++/공부
코드 #include #include using namespace std; int main() { srand(time(NULL)); int number[10]; int dest, sour, temp; for (int i = 0; i < 10; i++) number[i] = i + 1; // 셔플 알고리즘 // i의 조건은 섞고 싶은 만큼 지정하기 for (int i = 0; i < 77; i++) { dest = rand() % 10; sour = rand() % 10; temp = number[dest]; number[dest] = number[sour]; number[sour] = temp; } for (int i = 0; i < 10; i++) cout
[C++] cin.eof()와 EOF(End of file)
2020. 4. 28. 22:56
C++/공부
EOF EOF(End of File): 파일의 끝, 더 이상 읽을 데이터가 없다 cin으로 입력을 받으려고 할 때, EOF라면 입력이 취소되고 cin.eof()는 true를 반환한다. 이를 이용하여 파일이 종료될 때까지 입력을 받는 코드를 작성할 수 있다. 터미널(콘솔)에서는 EOF를 수동으로 넣어 주어야 한다. Windows: Ctrl+z / Unix: Ctrl+d 코드 #include int main() { using namespace std; int a, b; while(true) { cin >> a >> b; if (cin.eof()) break; cout
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZDXgY%2FbtqBqjDY5aR%2F8THEvaikoprQXke8pb5Uk0%2Fimg.png)
[C++] 매크로와 인라인(inline) 함수
2020. 1. 22. 22:33
C++/공부
선행처리기와 매크로 선행처리: 컴파일 이전의 처리 소스 파일은 컴파일러에 의해 컴파일 되기 이전, 선행처리기에 의해 선행처리 과정을 거치게 된다. 이때 선행처리기는 삽입해 놓은 선행처리 명령문대로 소스 코드의 일부를 단순 치환(substitution) 한다. 선행처리 명령문은 # 문자로 시작하며, 선행처리기에 의해 실행되는 문장이기 때문에 세미콜론(;)을 붙이지 않는다. 다음은 코드 내 PI 라는 문자를 3.14로 치환하기 위한 코드이다. #definePI3.14 선행처리 명령문은 '지시자', '매크로', '매크로 몸체(대체 리스트)'의 세 부분으로 구분할 수 있다. 지시자: 선행처리기가 프로그래머가 지시하는 바를 파악하기 위한 부분 매크로: 매크로 몸체로 치환될 부분, 매크로 이름은 대문자로 정의하는 ..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYRRRu%2FbtqA5PQZen7%2FyKX10vX0jAhKuM0pSv4Czk%2Fimg.png)
[C++] 함수 오버로딩과 매개변수의 디폴트 값
2020. 1. 13. 07:32
C++/공부
함수 오버로딩(Function Overloading) C언어에서는 동일한 이름의 함수가 존재하면 컴파일 오류가 발생한다. int main(void) { MyFunc(20);// MyFunc(int a) 호출 MyFunc(30, 40);// MyFunc(int b, int c) 호출 return 0; } 함수 호출 시 전달되는 인자를 통해서 이름이 같아도 함수의 구분이 가능하기 때문에, 매개변수 선언 형태가 다르다면 동일한 이름의 함수 정의를 허용한다. 이를 함수 오버로딩이라고 한다. C++에서는 함수를 찾을 때 함수의 이름과 매개변수 정보를 동시에 활용한다. 따라서 MyFunc(30, 40)의 경우, 두 개의 int형 매개변수를 받는 MyFunc이라는 함수를 찾아간다. 반면 C언어는 함수의 이름만을 이용..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBhztU%2FbtqAZPP9jpu%2FrHF8CDdGFFbsCrteKJz2qK%2Fimg.png)
[C++] 데이터의 입출력 - C++의 printf, scanf
2020. 1. 9. 10:23
C++/공부
C++의 printf 언어를 배울 때, "Hello World" 메시지를 출력하는 것부터 시작한다. 당연하게도 C언어의 프로그램과는 차이가 있으나, 눈에 익혀 자연스럽게 외워야 한다. 기존 C 프로그램과 동일하게 생성하되, 새 항목 추가 시 확장자명을 .cpp로 유지해야 한다. HelloWorld.cpp #include int main(void) { int num = 20; std::cout