C++
c++ 함수 템플릿 사용하기
c++ 함수 템플릿 사용하기
2020.11.23동작하는 방식은 똑같은데 parameter 가 다른경우 일일이 다른 함수를 만들어 줘야하는 번거로움이 있습니다. int getMax(int x, int y) { return (x > y) ? x : y; } double getMax(double x, double y) { return (x > y) ? x : y; } 두가지 만 해도 함수를 하나더 만들어 줘야하는데 float char 등등.. 여러가지 type의 같은 함수를 많이 만들수록 유지보수도 힘들어집니다. 그래서 template 라는 함수를 사용해서 코드를 간소화 시키겠습니다. template T getMax(T x, T y) { return (x > y) ? x : y; } template 보통 T를 많이 쓰지만 원하시는 변수명을 지으셔도 상관없..
정수와 문자의 최대/최소값 알아내기(min, max)
정수와 문자의 최대/최소값 알아내기(min, max)
2020.11.15#include #include #include using namespace std; int main() { auto result1 = min(1, 5); auto result2 = max('a', 'z'); cout
vs2019 - JSONCPP 빌드하기
vs2019 - JSONCPP 빌드하기
2020.11.12github.com/open-source-parsers/jsoncpp open-source-parsers/jsoncpp A C++ library for interacting with JSON. Contribute to open-source-parsers/jsoncpp development by creating an account on GitHub. github.com 다운로드 ZIP 버튼을 눌러서 다운을 받습니다 폴더안에 amalgamate.py 파일을 실행 해주시면 dist 파일이 생성됩니다. 그다음 CMAKE 를 이용해서 Configure -> Generate 순으로 눌러주시면됩니다. Configure를 누르시면 vs버전과 64 or 32 중에 선택해주시면됩니다. 완료되시면 OpenProject를 누..
괄호 연산자 오버로딩
괄호 연산자 오버로딩
2020.11.12//function obj #include using namespace std; class AccuMulator { private: int m_counter = 0; public: int operator() (int i) { return (m_counter += i); } }; int main() { AccuMulator acc; cout
c++ 첨자연산자 오버로딩
c++ 첨자연산자 오버로딩
2020.11.12#include #include using namespace std; class IntList { private: int m_list[10]{ 0 }; public: // reference로 받는이유 값을 읽을수도 있고 값을 바꿀수도 있게하려고 // 항상 주소를 가지고 있는 lvalue가 들어와야 하기때문에 int& operator [] (const int index) { // 디버깅으로 체크하기 쉽게 하고 퍼포먼스를 높이기 위해 assert(index >= 0); assert(index < 10); return m_list[index]; } const int& operator [] (const int index) const { return m_list[index]; } }; int main() { In..
증감연산자 오버로딩
증감연산자 오버로딩
2020.11.12#include using namespace std; class Digit { private: int m_digit; public: Digit(int digit = 0) : m_digit(digit) {} // prefix 전위형 Digit& operator ++ () { ++m_digit; return *this; } // post 일경우 더미로 아무거나 넣어준다. Digit operator ++ (int) { Digit temp(m_digit); ++(*this); return temp; } friend ostream& operator
c++ 문자열을 숫자로 변환하기(stringstream)
c++ 문자열을 숫자로 변환하기(stringstream)
2020.11.08#include #include using namespace std; int main() { stringstream ss; double number1 = 0.0; ss
c++ 비교 연산자 오버로딩 하기
c++ 비교 연산자 오버로딩 하기
2020.11.05#include #include #include using namespace std; class Cents { private: int m_cents; public: Cents(int cents = 0) { m_cents = cents; } int getCents() const { return m_cents; } int& getCents() { return m_cents; } friend std::ostream& operator
c++ 단항 연산자 오버로딩 하기
c++ 단항 연산자 오버로딩 하기
2020.11.05#include using namespace std; class Cents { private: int m_cents; public: Cents(int cents= 0) { m_cents = cents; } int getCents() const { return m_cents; } int& getCents() { return m_cents; } }; Cents 클래스를 만들었습니다. 처음으로 할 것은 입출력 operator 를 오버로딩하는 것 입니다. friend std::ostream& operator
Qt - Hello world
Qt - Hello world
2020.11.04처음 시작하는 Qt 이기 때문에 다른방법보다 더쉬운 Qt creater 를 사용해서 만들어 보겠습니다. New project를 누르고 Qt widgets 을 선택합니다. 파일이 생성될 경로를 지정해주시고 파일이름을 설정합니다. Base class 는 app type을 지정하는데 QmainWindow (menubar, status bar, tool bar) 기본구조 Qwidget 조금더 간단한 형태 dialog 등등 form file -> Ui의 대한 정보를 담는 파일 입니다. Kits 는 컴파일러 의 종류를 결정 하는 것입니다. 저는 64bit 로 선택하였습니다. gcc 나 clang 같은걸 추가해서 사용 할 수도 있습니다. 기본적인 틀이 잡힌 파일이 생성되었습니다. .pro 라는 파일은 Qt에서 사용하..
프로그램 및 데이터 구조화 (학생 점수 구하기) 1
프로그램 및 데이터 구조화 (학생 점수 구하기) 1
2020.11.02라이브러리의 기능들은 다음과 같은 몇가지 공통적인 특징이 있습니다. 특정 문제를 해결 다른 기능들과 연계하지 않고 독립적 기능의 이름이 있음 연산 구조화 // 중간시험 점수, 기말시험 점수, 종합 과제 점수에서 학생의 종합 점수를 구함 double grade(double midterm, double final, double homework) { return 0.2 * midterm + 0.4 * final + 0.4 * homework; } 함수 대부분은 이와 비슷하게 정의합니다. 반환 타입, 함수 이름, 소괄호로 묶인 매개변수 목록 (parameter list) 다른 함수를 반환하는 함수를 정의하는 방법은 좀더 복잡합니다. median 함수 // vector의 중앙값을 구함. // 함수를 호출하면 인수..
c++ 익명 객체 (anonymous)
c++ 익명 객체 (anonymous)
2020.10.30#include using namespace std; class A { public: void print() { cout