C++

    [C++] cin.ignore와 버퍼에 대한 이해

    cincin은 character input의 약자로, 버퍼의 값을 읽어온다. 만약 버퍼에 읽어올 값이 없으면 표준 입력 스트림으로부터 입력을 받아와 버퍼에 저장하고나서 버퍼의 값을 읽어온다.입력을 받는다는 것이 아닌 버퍼를 먼저 읽으려고 한다는 관점이 중요하다. (버퍼는 자료구조 queue와 유사하다. 선입선출로 작동한다.) cin >>은 공백 (스페이스, 탭, 줄바꿈) 문자를 기준으로 끊어서 읽어오고, 공백문자는 무시한다#include using namespace std;int main() { char name[100]; cout > name; cout 0. 버퍼에 다음과 같이 저장된다. [ j ] [ o ] [ h ] [ n ] [ ' ' ] [ n ] [ a ] [ n ] [ a ]..

    [C++] 문자열 뒤집는 방법

    1. reverse() 함수 #include #include#includeusing namespace std; int main() { string str = "abcd"; reverse(str.begin(), str.end()); cout1.5 reverse iterator 사용string str, rstr;cin >> str;rstr.assign(str.rbegin(), str.rend());2. strrev() 함수 #include#includeusing namespace std; int main() { char str[] ="abcd"; strrev(str); cout3. for문 사용#include#includeusing namespace std; int main(..

    [C++] C++ 17 표준 라이브러리의 알고리즘 병렬화

    알고리즘의 병렬화C++ 17은 표준 라이브러리의 여러 알고리즘에 '병령 실행'을 지원하는 중복적재 버전을 추가하며, 병렬 실행을 지원하는 새 알고리즘도 여럿 추가한다. 예를 들어 기존 알고리즘인 std::transform에는 다음과 같은 중복 적재 버전들이 추가되었다.FwdIt2 transform( ExePolicy&& policy, FwdItIt1 first1, FwdItIt1 last1, FwdIt2 d_first, UnFunc func);FwdIt3 transform( ExePolicy&& policy, FwdIt1 first1, FwdIt1 last1, FwdIt2 first2, FwdIt3 d_first, BiFunc func ..

    [C++] 구조체 바이트 패딩 규칙 코드 (structure byte padding or align rule)

    1. Unless overridden with __declspec(align(#)), the alignment of a scalar structure member is the minimum of its size and the current packing."__declspec(align(#))을 오버라이드 하지 않으면, 스칼라 구조체(long, bool과 같은 일반 변수로만 이루어진 구조체)의 멤버는 변수의 사이즈와 현재 지정된 byte padding align을 따른다." bool과 long으로만 이루어진 각 구조체의 사이즈는 1 byte, 4 byte와 같이 각각의 멤버 사이즈대로 align 되었다.struct Size_1_Align{ bool b;};struct Size_4_Alig..

    [C++] 라운드 로빈 스케줄링 구현 (우선순위 큐 이용)

    EHProcess.h #pragma once #include #include using namespace std; class EHProcess { string pname; //프로그램 이름 const int tjob; //전체 작업량 const int cjob; //cpu 점유 시 수행가능 최대 작업량 int ntjob = 0; //현재 남은 작업량 int ncjob = 0; //현재 cpu 점유 시 수행가능 최대 작업량 public: EHProcess(string pname, int tjob, int cjob); //Idle 상태에서 Ready 상태로 전이 void IdleToReady(); //CPU를 점유하여 실행, 남은 작업량 반환 int Running(); //프로세스 종료 void EndPro..

    C++ 23 추가된 주요 기능들

    1. if consteval - if constexpr의 consteval 버전이 생긴다. 2. Deducing this - 이제 클래스에서 똑같은 함수를 non-const, const 버전으로 두 가지를 만드느라 생기는 중복코드가 대폭 간결해진다. 3. auto(x), auto{x} - 함수 파라미터에서 rvalue (정확히는 prvalue)로 카피해 전달해주는 기능이다. 예제) 벡터에서 첫 원소와 똑같은 원소를 다 지우고 싶을 때 auto elem = v.front(); std::erase(v.begin(), v.end(), elem); 이 때 auto elem = v.front(); 에서 무조건 복사가 생긴다. C++ 23부터는 std::erase(v.begin(), v.end(), auto(v.f..

    [Unreal] C++ error C2018 : '' 문자를 인식할 수 없습니다 오류 해결

    아래와 같이 한글로 작성할 시 여러 오류가 뜨는데 이는 컴파일러가 한글을 인식못해서 발생하는 오류다 고급 저장 옵션에서 UTF-8로 변경해야 오류를 쉽게 해결할 수 있다, 만약에 파일 탭 클릭 후 보이지가 않는다면 아래 방법을 통해 설정하면 된다 UTF-8로 변경 후 빌드가 제대로 되는 모습이다

    [Unreal] C++ 변환할 수 없습니다 오류 해결

    SetRootComponent(GetCapsuleComponent()); UCapsuleComponent 뿐만 아니라 다른 컴포넌트들을 인식 못하기 때문에 발생하는 오류이다. 해당 컴포넌트 헤더파일을 추가해주면 된다 #include "Components/CapsuleComponent.h"

    [실2] 1182 - 부분수열의 합

    #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; #pragma region 상하좌우 / 위치 const pair dir[] { { 1, 0 }, { -1, 0 }, { 0, -1 }, { 0, 1 }, }; #define _y first #define _x second #pragma endregion #pragma region 빠른 입출력 #define FAST_IO() \ {\ ios::sync_with_stdio(false);\ cin.tie(NULL); \ cout.tie(NULL); \ }\ #pragma endregion v..

    [LeetCode] 1239. Maximum Length of a Concatenated String with Unique Characters

    시간 복잡도) O(n * n2) 공간 복잡도) O(n) class Solution { public: int ans = 0; bool isUnique(string s) { set st(s.begin(), s.end()); return (st.size() == s.length()); } // 백트래킹 void solve(vector& arr, int index = 0, string s = "") { if (!isUnique(s)) return; ans = max(ans, (int)s.length()); for (int i = index; i < arr.size(); i++) solve(arr, i + 1, s + arr[i]); } int maxLength(vector& arr) { solve(arr); r..