Category: modern c++

[c++20][windows] std::chrono::from_stream 사용중 버그

c++ 모던, 그리고 20로 발전되어 오면서 사소한 구현을 std 의 라이브러리/함수를 사용하면 편리해 졌습니다.. 대다수가 안되던 것은 당연히 아니니까요 그중에서 string 시간/날자 를 chrono time , time_point 로 변환할 수 있는 https://en.cppreference.com/w/cpp/chrono/duration/from_stream from_stream 을 사용할 수 있습니다 예를들면 “2021-12-06 12:31:04” 같은 문자열을 time_point 로 변환할 수 있고 연산이나 값을 사용할 수 있죠.. 다만 이는 현재 […]

[c++17][byte] visual studio c++17 with windows.h byte error C2872

visual studio 상에서 c++17 옵션을 활성화 시 만날 수 있는 오류 영문 1>c:\program files (x86)\windows kits\10\include\10.0.14393.0\shared\rpcndr.h(192): error C2872: ‘byte’: ambiguous symbol1>c:\program files (x86)\windows kits\10\include\10.0.14393.0\shared\rpcndr.h(191): note: could be ‘unsigned char byte’1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\cstddef(15): note: or ‘std::byte’ 한글 1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um\oaidl.h(563,26): error C2872: ‘byte’: 모호한 기호입니다.1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared\rpcndr.h(191,23): message : ‘unsigned char byte’일 […]

c++ std priority_queue (heap)

https://en.cppreference.com/w/cpp/container/priority_queue Working with a priority_queue is similar to managing a heap in some random access container, with the benefit of not being able to accidentally invalidate the heap. priority_queue : heap heap 으로 이해 #include <queue> queue 와 같은 최-상단 pop 방식 이기에 queue 이름을 가짐 기본 순서는 low to high 로 최대값을 pop,top 으로 가져온다 (greater<>) function object […]

std:: unordered_map,set

c++11 이후 표준으로 포함된 unordered_map,set둘다 일반 (ordered)map,set 과 내부 구조는 아예 다르다사용방법 이 비슷하기에이름이 같은 map,set 일 뿐(ordered)map ,set 은 트리구조로 되어 있어 삽입하며 정렬되고 정렬된만큼 검색은 Olognunordered_map,set 은 hashtable 기반으로 키를 hash 를 만들고 배치하고 접근하기 때문에 삽입할때 O1, 탐색할때 O1 random access 가 가능하며 [ ] 연산자로 접근 가능하다 https://en.cppreference.com/w/cpp/container/unordered_map https://en.cppreference.com/w/cpp/container/unordered_set

c++20 future c++?

문득 c++11 이후의 c++ 11,14,17 을 흔히 모던 c++ 이라고 하지 c++20 이 표준으로 지정된 지금 c++20 은 뭐라 불러야하지.. c++11,14,17,20 모두 같은 modern 이기엔 너무 긴 시간이 아닌가..이번까지만 modern 으로 쳐주는건가…… c++ 20 의 주요 내용https://en.cppreference.com/w/cpp/compiler_support/20 현재 인지 하고 있는 내용들(정확한 기능이 아니래도 이런 이런 기능이 추가 되는구나 라고 인지하는것들) coroutines modules concept Three-way […]

c++ 배열보다 std::array 를 쓰자

일반적인 정적 사이즈를 선언할 경우에도 배열보다는 std::array 를 사용하는 편이 좀더 장점이 있다 c style 고정 사이즈 배열c++11 이후 std::array c style 고정 array 보다 더 많은걸 쉽게 할 수 있다stl 스타일 iterator 를 사용 할 수도있고algorithm 을 바로 적용해 sort 도 할 수 있으며당연히 관련 함수를 사용할 수 있고배열의 사이즈를 별도로 기록해두고 사용하지 않아도 […]

c++(and another) compiler on website

gcc 버전별 컴파일 가능한 modern c++ feature 확인하기 곧 바뀔 현실이지만 실제 현업에서 많이 장애물이기도 하면서 현재도 많이 남아 있는 centos 에 대한 이슈로 gcc 빌드가 몇몇 회사의 몇몇 솔루션의 경우 c++ 11 의 feature 조차 제대로 사용할 수 없는 (하지만 일부는 또 사용가능한) 케이스가 많다 그때 그때 확인하거나 알고 싶을 때 유용한 사이트가 있다 […]

std::function (modern c++)

실제로 사용해보진 않았지만 기회가 되면 사용하게 될/ 하고 싶은 feature 라서 정리해둔다 일반 c 언어의 함수포인터 역활을 하는 c++11 이후 추가된 feature c++ 의 () 를 붙여 호출 가능한 모든 Callable 을 대입하거나 인스턴스로 활용할 수 있다기존의 함수 포인터는 람다, Functor(class function), 함수포인터를 모두 처리할 수 없었다 예제는 나중에… 관련 함수 :std::mem_fnstd::bindstd::placeholder

std::vector::emplace_back (modern c++)

list,deque,vector 에 사용가능한 멤버 함수 c++11 에 처음 추가 되었으며 가변인자 템플릿을 인자로 받는다인자로는 vector 의 instance / class 인 경우 생성자를 넣어 주어야 한다emplace_back 의 경우 일반 push_back 과 다르게 vector 로 복사되는 흐름이 아닌vector 에 element 가 생기는 동시에 초기값을 넣어주게되어 복사가 일어나거나 임시객체가 생성되지 않아 좀더 빠른 코드 c++17 이후의 return value […]