[C++] 8, 10, 16 진수 입력하는 법 C++ 에서 8, 10, 16 진수를 입력하는 법 /* 16진수를 입력받아 8진수로 출력하기. */ #include int main() { int inputNumber; /* 8진수 : std::oct 10진수 : std::dec 16진수 : std::hex */ // 16진수로 입력 받기 std::cin >> std::hex >> inputNumber; // 8진수로 출력 std::cout 개발/C++ 2017.04.29
[C++] constexpr (상수표현식) 사용법 및 예제 출처 : 시작하자! C++17 프로그래밍 /* constexpr 지정자로 선언된 생성자는 클래스를 단순화시키는 동시에 객체 생성과 동시에 멤버 변수를 초기화시킬 목적으로 사용한다. 사용법 :: 1. constexpr 데이터-타입 상수-이름 = 식 2. constexpr 데이터-타입 상수-이름(식) 3. constexpr 데이터 타입 함수 이름(인수) 4. constexpr 생성자(인수) */ #include struct complex { constexpr complex(double r, double i) : re(r), im(i) {} constexpr double real() const { return re; } constexpr double imag() const { return im; } priva.. 개발/C++ 2017.03.10
[C++] C++ typedef typedef 키워드typedef 는 새로운 타입을 만드는 것이 아니라 타입의 새로운 별칭을 정의하는 키워드 이다.typedef 는 다음과 같이 사용한다.typedef int TypedefInt; TypedefInt money; moeny = 100; typedef 를 이용한 예제를 살펴보도록 하자.#include class TypedefEx { public: typedef int Type1; }; int main() { TypedefEx::Type1 money; money = 10; TypedefEx::Type1 ex; ex = 15; std::cout 개발/C++ 2017.02.22
[C++] 템플릿과 vector를 이용한 간단 스택 구현 템플릿을 이용해 간단한 스택을 구현했다. /* 스택 구현 */ #include #include template class Stack { public: void push(T const& elem); void pop(); T top(); bool empty(); private: std::vector vector; }; template void Stack::push(T const& elem) { vector.push_back(elem); } template void Stack::pop() { if (vector.empty()) { throw std::out_of_range("Stack::pop() : empty stack"); } vector.pop_back(); } template T Stack::top().. 개발/C++ 2017.02.22
[C++] 함수 템플릿 오버로딩 템플릿을 그저 겉핥기 식으로 공부한 것 같아서 다시 공부를 하고 있는데 템플릿으로 오버로딩 할 생각은 하지 않았던 것 같다. 일반함수처럼 함수 템플릿도 오버로딩 할 수 있다. 여기서 중요하게 봐야할 점은 템플릿이 아닌 일반함수가 우선 순위가 높다는 것이다. #include int plus(int a, int b) { std::cout 개발/C++ 2017.02.16
[C++] 템플릿 템플릿좀 더 다양한 타입에 대응할 수 있는 코드를 만들어 낼 수 있다.템플릿 파라미터에 데이터 타입을 알리는 typename 과 class 는둘 중 아무거나 사용해도 괜찮지만 typename을 사용해야 할 때가 있다. 템플릿 인자추론함수 템플릿 호출 시에 타입을 명시적으로 지정해주지 않아도 함수 인자로 템플릿 파라미터를 결정하는 것을 말한다. template inline T plus(T a, T b); 그렇지만 만약, 위의 plus(1, 0.2) 에서 두 개의 인자가 각각 int, double 일 경우에는 서로 다른 형이기 때문에 동일한 타입의 인자를 받는 T 타입은 인자 추론을 할 수 없어 오류가 발생한다. 이럴 때에는 다음과 같이 타입을 명시적으로 적어주면 된다. plus(1, 2.1); plus(1.. 개발/C++ 2017.02.16
[C++]goto문 오랜만에 goto를 쓰려고하니 기억이 나질 않았다. 다음과 같은 방법으로 goto를 사용할 수 있다. goto가 무엇인지 잘 모르겠다면 원하는 곳으로 이동할 수 있다고 쉽게 생각할 수 있다. #include int main() { int count = 0; go: for (int i = 0; i < 5; i++) { count++; std::cout 개발/C++ 2017.02.15
[C++] C++ 크로스 플랫폼 C++로 IOS, Android, window 어플리케이션을 만들 수 있다는 것을 오늘 알았다. 역시 MS다. 뭔가 소름이 돋으면서 빨리 공부해보고 싶어졌다. 우선 이번 인턴이 끝나면 본격적으로 해봐야겠다. 너무 좋다~ 개발/C++ 2017.01.25
[C++] C++ 이중 배열 #include void printArray(int **&arr); int main() { int** array; int count(0); array = new int*[5]; for (int i = 0; i < 5; ++i) { array[i] = new int[5]; } for (int i = 0; i < 5; ++i) { for (int q = 0; q < 5; ++q) { array[i][q] = count; count += 1; } } printArray(array); return 0; } void printArray(int **&arr) { for (int i = 0; i < 5; ++i) { for (int q = 0; q < 5; ++q) { std::cout 개발/C++ 2017.01.12
[C++] Thread Thread 이 클래스는 개별 실행 쓰레드를 나타내는 클래스이다. 실행 쓰레드는 동일한 주소 공간을 공유하면서 멀티 스레딩 환경에서 다른 시퀀스와 동시에 실행할 수있는 일련의 명령어이다. 초기화 된 쓰레드 객체는 실행 중인 실행 쓰레드를 나타낸다. 이러한 쓰레드 객체는 결합할 수 있고 고유한 thread id 를 가지고 있다. 디폴트 생성자 (초기화 되지 않은) 쓰레드 객체는 결합 가능하지 않다. 쓰레드 id는 모든 쓰레드에서 공통으로 결합할 수 없다. #include #include #include void printCount(int count) { std::cout 개발/C++ 2017.01.02