
"c++20 STL::Container #1" 1. std::to_array std::array 만드는 방법이 추가되었다. //암시적 타입 추론 auto ToArray = std::to_array("Hello World");//명시적 타입 추론auto ToArray = std::to_array({ 1,2,3,4,5,6 }); 2. std::erase, erase_if 기존에 vector 데이터 중 특정한 조건에 부합하는 데이터를 삭제하려고 할 때 여러가지 방법과 문제점을 알아보자.// 1번 ====================================================================vector vec {-1, 2, 3, 4, -5, 7, -2, 3 }; for (auto i..

"(c++20) Conditional Explicit Constructor" 1. explicit // c++11 struct NoExplicit{ NoExplicit() = default; NoExplicit(int n) { cout TestNoExplicit(10); // - ???? error X TestNoExplicit() NoExplicit struct 자료형을 매개변수로 받고 있다. 그럼 매개변수에 NoExplicit struct 이 외에 다른 자료형이 들어간다면 에러를 뱉어내는게 정상이다. 하지만 위 코드에서 TestNoExplicit(10) 에러를 뱉어 낼거 같지만 정상 작동한다. 이는 컴파일러에서 "10"을 NoExplicit(int n)" 생성자를 이용하여 암시적 형변환을 ..
![(c++20) [Three-way Comparsion(3방향 비교 연산자)/우주선] 연산자](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FcDC1vD%2FbtsOfA6lJwB%2FAAAAAAAAAAAAAAAAAAAAAHdkz3aRvK0AGacD9i7PUWw2ASTosTL8hjdByH_R-ZIG%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DKPP3WYX6BlDMVlbfbgAVS%252FAc454%253D)
"(c++20) Three-way Comparsion(3방향 비교 연산자)/우주선" c++20에 추가된 것 중에 아주 편안한 연산자 오버로딩이 생겼다. !! 지금은 아니더라도(?) 아주 유용하게 쓰일 거 같은 녀석이라서 정리해본다. class나 struct를 만들어서 그 객체끼리 비교를 하기 위해서는 필요에 따라 [ '' '>=' '==' '!=' : 6개] 연산자 오버로딩을 해야한다. 하지만 여기서 c++20에 추가된 Three-way Comparsion 연산자를 사용하면 6개를 포함한 operator하나만 정의하면 된다. #include using namespace std;struct Myoperator{ Myoperator(int value) : _value(value) { } //auto ope..

"(c++20) consteval, constinit" C++20에 추가된 Language 중 consteval, constinit에 대해서 알아보고 기존에 있었던 const와 constexpr과 비교해보려고한다. 일단 어떤 단어의 줄임말인지 확인하고 넘어가자 ~const: Constant 상수constexpr: Constant Expression 표현// c++11consteval: Constant Evaluation 검증 // c++20 constinit: Constrant Initialization 초기화 // c++20함수에 키워트를 붙였을 때, 변수에 키워드를 붙였을 때를 나눠서 정리해보았다. 1. 함수 (일반 vs constexpr vs consteval) 먼저 선행해야 할 개념은 런타임(..
![[c++17] 전문자를 위한 c++17 새로운 내용 북마크](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FloN5m%2FbtsOgqhSRL8%2FAAAAAAAAAAAAAAAAAAAAAJGB2bMfHUGQH0V3l07HsBOfX5gSHG_jajC9kRAWIcb-%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3D7yUwCpbGq9YQvEkycrBQdGsFdZg%253D)
c++17에 추가된 문법을 도서 "전문가를 위한 C++17(개정4판)"에서 빠르게 찾기 위해서 정리해보았다. page 58중첩된 네임스페이스 (nested namespace)61std::byte69if문의 이니셜라이저(intializer : 초기자)72switch문의 이니셜라이저(intializer : 초기자)81구조적 바인딩(structured binding)138로우 레벨 숫자 변환 "}">#include 140std::string_view클래스298weak_ptr도 shared_ptr와 마찬가지로 C스타일 배열을 지원한다.299weak_from_this()390static 데이터 멤버를 inline으로 선언할 수 있다.530std::as_const() 헬퍼 메서드 "}">#include (obj)..
![[HTTP] Error 416 "The requested range is not satisfiable"](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FcL6ar6%2FbtsEqV67fqm%2FAAAAAAAAAAAAAAAAAAAAALw6yR2W1Ibe6RdRAQkbQWFdNX1uiHgtNHWQEYpa3ETS%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DILns8xpWndD6T8zPmvWGVhOEMNU%253D)
HTTP Error 416 "The requested range is not satisfiable" ???????????????????? 범위를 잘못 입력했거나 끝 범위를 입력한 경우. 🔸 발생하게 된 상황: 작업을 하던 중... 파일을 받다가 중간에 멈췄을 경우(강종 등등 예상하지 못한 종료) 다음에 다시 파일을 이어받고 싶어서 코드를 작성하다. 발생한 에러였다. HTTP에 특정 범위(byte)부터 파일을 받겠다고 요청을 보냈었다. HTTP에 연결은 되지만 전달 받은 내용에는 위와 같은 텍스트가 포함된 buffer를 받았다. 요청문법이 잘못되면 "Error 400 : Bad Request - Invalid Header" 을 뱉어낸다. 즉 문법에는 문제가 없었다. ("HTTP 범위 요청" 키워드로 구글링..
![[Framework] 1. 사용자 지정/정의 메세지(Message) 사용하기, 메시지 맵(MFC)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FcdmbR9%2FbtsDxkNFZVn%2FAAAAAAAAAAAAAAAAAAAAAECiFrbAmX3H0g79j2HNdSc7OaERD5qLOUYT9fGlveQf%2Fimg.jpg%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3D6b8RBWJ2dY2%252FQxatAxZuiABDvNc%253D)
일하다 "#define ID_MYMESSAGE WM_USER+1" 이런 식으로 정의 된 디파인을 보고 WM_USER가 무엇이며.. 어떻게 사용하는지 궁금해서 정리해본다..위와 같은 정의는 사용자 지정/정의 메세지를 사용하기 위한 messageID를 부여하는 코드 였으며 메시지 맵을 만드는 과정은 아래와 같다. 1. 사용자 정의 함수를 만든다. (메시지 핸들러를 정의한다.) 사용자 정의 함수는 정해진 함수틀(원형)이 있다. 아래와 같게 함수틀을 지켜서 정의 해야한다. afx_msg LRESULT MyPinkoFunc(WPARAM wParam, LPARAM lParam) { return (0); } 2. ON_MESSAGE ON_MESSAGE( message, memberFxn ) message : 메시지 ..
![[디자인 패턴] 생성 패턴 - 2. 싱글턴 (singleton)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbYxlhs%2FbtsrYzve5tc%2FAAAAAAAAAAAAAAAAAAAAABOl4fHRVTqONrheTJt42GtTHXRyJnEnwFMJypCVrRvE%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DYLlStUUfOCCt1X1ujSKJDAtiCZo%253D)
** 싱글턴 패턴이란? ** 🌟 정의 / 특징 1. 싱글턴(singleton)이란 디자인 패턴 중 가장 간단한 패턴으로 '어떤 객체 하나'를 의미한다. 싱글턴 패턴은 프로그램에 클래스의 인스턴스가 딱 하나만 존재하도록 하는 디자인 패턴이다. 2. 외부 시스템과 상호작용하는 유틸리티 클래스 또는 전역 상태를 관리하는 클래스 구현에 적합하다. ex. 데이터 베이스 로드, 파일 시스템 로드, 공용 gui등(게임에서 팝업 창 or 툴팁창 ..), 로거(logger) 🔸 여기서 잠깐 !! 🔸 * 인스턴스와 객체의 차이는 무엇일까? 간단히 말해 객체는 선언이고 인스턴스는 실체화이다. 객체 지향 프로그래밍에서 해당 클래스의 구조로 컴퓨터 저장공간에 실제로 독립된 데이터 공간에 메모리를 가지게 되면 그것을 인스턴스화라..
![[C++] Map의 Key로 Class/Struct 넣기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbygJls%2FbtsOe5sgQDv%2FAAAAAAAAAAAAAAAAAAAAAKe3l0vKPiBAedQ_3gHONG2x_EYWY0Lmt3j8VTzI__6P%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DE%252F7GNMyvIvlGu0r8EucR6XFh5KI%253D)
오늘은 "호랭이아인교" 병아리 블로그를 운영하는 김드스님의 포스팅을 훔쳐왔다 !! 똑같이 포스팅 해도 된다고 허락을 받았기 때문에 출처를 밝히고 거의 80% 같은 내용을 포스팅한다. 고마워요 김드스님 ~** Map의 Key 값으로 Class/Struct 넣기 **🎃목표map의 key값으로 기본적인 데이터 타입(int, string, float, double...)이 아닌 우리가 직접 만든 타입(user defined type)을 넣어보자.🎃특징Map은 key(키)와 Value(값)이 쌍으로 이루어진 자료구조로 키를 통해 값에 접근 할 수 있도록 만들어져 있다. map은 key(키)의 중복을 허용하지 않고, value(값)의 중복은 허용한다. c++의 map은 레드블랙트리를 기반으로 구현이 되어있다...
![[디자인 패턴] 생성 패턴 - 1. 팩터리 Factory](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FQ0l5H%2FbtsqJr5oYPp%2FAAAAAAAAAAAAAAAAAAAAAC6ssrBR50xbjubWbFOHfjvl6ke_poQWixO8_upMQDWi%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3D9ovoiNi%252FTH%252Bqo0mywgAEVd2pEUw%253D)
** 팩토리 패턴이란? ** 🌟 정의 객체를 생성할 때 그 객체의 생성자를 직접 호출하지 않고, 객체 생성을 담담하는 팩토리에 요청하는 구조를 뜻한다. 🌟 장점 1. 객체를 생성하는 코드가 프로그램의 이곳저곳에 산만하게 흩어지지 않고 객체를 생성하는 기능을 한 곳에 모아둘 수 있다. 2. 클래스 타입을 정확히 몰라도 클래스 계층에 맞게 객체를 생성할 수 있다. 3. 팩토리는 클래스 계층에 따라 실행할 수 있다. 4. 객체를 정확한 순서로 생성하려면 복잡한 단계가 필요하거나, 생성된 객체를 항상 다른 객체와 일정한 방식으로 연결해야 할 때 팩토리를 사용하면 편하다. ** 팩토리 종류 ** 🌟 정적 팩터리 메서드 (static factory method) 객체를 생성해서 리턴하는 함수. class Point..
![[Algorithm/ 비트마스크]](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FkzALc%2FbtsIJyUxdu0%2FAAAAAAAAAAAAAAAAAAAAAH3ThWPUc0yyz7S33EOdKqqijnwfl_e76e0NJmGUGCQx%2Fimg.jpg%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DsGY%252B8ZpHdwBp34pTnrHaYyyfcYk%253D)
공부 전 Tmi.매일 일 집 일 집 하니 꾸미는 날도 없고 나를 너무 대충대충 살게 두는 거 같아서 현타가 옵니다. 옷도 가방도 화장품도 안 산 지 오래 된 거 같아요. 나를 위한 소비도 없이 그냥 먹고 자고 일합니다. 이렇게 살면 좋을까? 라는 생각이 종종 듭니다. 잘 살고 있는건 아닌거 같죠 ? ㅠㅠ 공부도 조금 쉬었어요. 나의 속도로 공부하려고 했는데 남들의 속도를 보고 불안함을 느끼면서 우울감에 쉬는 것…? 참 아이러니합니다. (한심..) 백준 드디어 200개 돌파했습니다. 아직 적은 수지만 이번 연도에 500개는 넘고 싶네요. 지금은 정말 푸는 데 오래 걸리고 이전에 풀었던 거와 비슷한 문제여도 헤매는데 그러지 않을 날이 올까요? 현재 골드 2 입니다. 백준이 플레니넘이 되는 날 헌 번 더 Tm..
![[Algorithm/ Sparse Table (희소테이블)] 백준 17435번과 함께](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fb09xQl%2FbtsIKVgHxS7%2FAAAAAAAAAAAAAAAAAAAAAIO7XJ8thwN9bcfJNTuxbdvnxcZ1WMF8oXmufLQQjUz0%2Fimg.jpg%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DLVwRlnmyrVE66f%252B9ib70YE0Ng0o%253D)
Sparse Table (스파스 테이블) 특징 방향 그래프 입니다.모든 점이 목적지가 있습니다.그 점을 타고 새로운 점으로 갑니다.2의 제곱근으로 도착한 점을 저장합니다. (1번, 2번, 4번, 8번 이동에 대한 배열을 모두 저장합니다.) 예제를 풀면서 설명하겠습니다. https://www.acmicpc.net/problem/17435 17435번: 합성함수와 쿼리함수 f : {1, 2, ..., m}→{1, 2, ..., m}이 있다. 이때 fn : {1, 2, ..., m}→{1, 2, ..., m}을 다음과 같이 정의하자. f1(x) = f(x) fn+1(x) = f(fn(x)) 예를 들어 f4(1) = f(f(f(f(1))))이다. n과 x가 주어질 때 fn(x)를 계산하는www.acmicpc.n..