C++

    [C++] stoi, stof, stol, stod 함수에 대해서 (string to int), 문자열 > 특정 타입

    1. C++에서 string 타입의 문자열을 숫자로 바꾸는 함수들의 이름. ▼ C++11 부터 아래 함수들을 사용할 수 있다. stoi = string to int stof = string to float stol = string to long stod = string to double stoul = string to unsigned int stoll = string to long long stoull = string to unsigned long long stold = string to long double 2. C++ stoi, stof, stol, stod 함수 원형과 매개변수가 뜻하는 것 ▼ 함수 원형 1) 정수형 int stoi(const string& str, size_t* idx = 0, i..

    [C++] to_string 함수에 대해서, 특정 타입 > 문자열

    1. std::to_string 함수 원형과 함수 설명 ▼ std::to_string 헤더파일 ▼ std::to_string 함수 원형 string to_string (int num); string to_string (long num); string to_string (long long num); string to_string (unsigned num); string to_string (unsigned long num); string to_string (unsigned long long num); string to_string (float num); string to_string (double num); string to_string (long double num); ▼ std::to_string 함수 ..

    C++ if/switch statement with initializer

    0. 서문 지금까지의 C++에서 if 또는 switch의 평가식에 사용되는 변수는 미리 선언되고 적절히 초기화된 상태여야 한다. std::map에 원소를 추가하고 이에 대한 예외 처리를 하는 아래 예제가 일반적인 샘플이라 할 수 있다. #include #include int main() { std::map map; map["hello"] = 1; map["world"] = 2; // 일단 insert를 수행하고 결과 pair를 반환받아야 한다. auto ret = map.insert({ "hello", 3 }); // 그러고 나서, pair의 2번째 요소를 체크 if (!ret.second) std::cout

    C++ 모듈 (Module)

    정의 기존의 #include 방식인 Translation Unit 방식과는 다른, 별개와 컴파일되는 소스 코드 파일의 집합이다. Header파일을 사용하면서 생겨나는 많은 문제를 제거하거나 줄이고, 컴파일 시간을 단축하기도 한다. 선언된 모든 매크로, 전처리 지시문과 export 하지 않는 이름(names)들은 표시되지 않으며, 컴파일 할 때 영향을 주지 않는다. 또한 순서에 관계 없이 가져올 수 있다. (include, import) Module을 한 번 컴파일한 후에는 export된 모든 형식(Type), 함수 및 템플릿을 이진파일에 저장한다. 이 파일은 이전의 헤더 파일들보다 훨씬 빠르게 처리될 수 있다. 기존의 C++ 빌드 과정 C++ 프로그램의 빌드 과정은 전처리, 컴파일, 링크로 구성된다. 전..

    [골4] 9252 - LCS 2

    #include #include #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0), cout.tie(0); string str1, str2; cin >> str1 >> str2; str1 = ' ' + str1; str2 = ' ' + str2; int n = str1.size(), m = str2.size(); vector v(n, vector(m)); stack s; for (int i = 1; i < n; i++) { for (int j = 1; j < m; j++) { if (str1[i] == str2[j]) v[i][j] = v[i - 1][j - 1] + 1; ..

    C++ 공용체(union) 개념과 통신에서의 사용 이유

    union 정의 union은 struct와 유사하지만 union의 변수 중 가장 큰 변수의 메모리를 모든 변수가 공유한다는 점에서 다르다. 같은 변수를 가지는 struct와 union의 size를 출력해보면 아래와 같이 결과가 다른것을 확인할 수 있다. typedef struct sizeTest_struct { int a;// 4byte double b;// 8byte }sizeTest_struct; typedef union sizeTest_union { int a; double b; }sizeTest_union; int main() { sizeTest_struct s; sizeTest_union u; printf("struct size : %d\r\n", sizeof(s));// 16 printf("u..

    C++ 함수 객체 (Functor) / () 연산자 오버로딩

    추가 글 : 함수 객체 (Fuction Object) 템플릿 / 람다식 — A Game Client Programmer (tistory.com) 함수 객체 (Fuction Object) 템플릿 / 람다식 장점 : 다른 멤버 변수와 멤버 함수를 가질 수 있고 일반 함수에서 하지 못하는 지원을 받을 수 있습니다. 함수 객체의 서명이 같더라도 객체 타입이 다르면 서로 전혀 다른 타입으로 인식합니다 devshovelinglife.tistory.com 콜백 메커니즘 개념을 설명하기 위해선 '서버 코드'와 '클라이언트 코드'의 개념이 필요하다. 서버 코드: 기능이나 서비스를 제공하는 코드 클라이언트 코드: '서버 코드'가 제공해주는 기능이나 서비스를 사용하는 코드 Print() 함수는 출력 기능을 제공하는 '서버 ..

    C++ 클래스 접근제한자 관련 보충 내용

    클래스 접근제한자는 오브젝트 레벨이 아닌 클래스 레벨로 작동되기 때문에 생성자 내에서 파라미터로 받는 같은 클래스 변수의 private 또는 protected 멤버 변수에 접근이 가능하다. #include using namespace std; class A { private: int mValue = 0; public: A() = default; A(int val) : mValue(val) { } A(const A& a) { this->mValue = a.mValue; } void Print() { cout

    C++ 객체 이동 std::move

    에 정의됨 // C++ 14 이전에는 constexpr 아님! template constexpr typename std::remove_reference::type&& move(T&& t) noexcept; std::move 는 어떤 객체 t 가 이동 될 수 있음 을 알려준다. 이동 이라 하면 C++ 11 에 도입된 개념으로 t 가 가지고 있는 자원을 다른 객체에게 효율적으로 전달하는 것을 의미한다. std::move 된 객체를 함수에 전달한다면, 우측값 레퍼런스를 인자로 받는 함수(예를 들어서 이동 생성자, 이동 대입 연산자, vector 의 push_back 함수 같은 애들)가 오버로딩 되어서 선택된다. 참고로 우측값 레퍼런스 자체는 rvalue 가 아니라 lvalue 이기 때문에, 이동 생성자나 이동..

    C++ 해시(Hash)의 의미 그리고 구현

    3명의 사람 (김연아, 손흥민, 서장훈) 이 위와 같이 부탁을 했다. 그리고 이러한 기능을 C++ 를 사용해서 구현해달라고 했다. 파이썬과 다르게, 기본적으로 C++ 에서는 이런 기능을 지원하지 않는다. 어떻게 가장 효율적이고, 빠른 자료구조가 될 수 있을까? 답은, 각각의 이름(텍스트)에 대해서, 유일한 Key 값을 가지게 하는 것이다. 만들어진 Key 값을 이용해서 자료에 접근한다면 O(1) 시간만에 접근할 수 있다. 해시(Hash)의 동작원리 해시에서 Key를 생성하기 위한 다양한 알고리즘이 존재한다. MD-5나 SHA이 그 유명한 해시 알고리즘 중 하나이다. 우리는 학습을 목표로, 문자열을 통해서 간단한 해시를 만드는 방법을 알아본다. 'apple' 이라는 문자열이 주어졌다고 가정하고 Key를 만..