"c++20 STL::Container #2" 1. contains기존 map, set 데이터 find함수 사용 시 반복자와 end반복자가 같지 않은 지 비교하는 방식이였다. std::set s {1, 2, 3, 4, 5}; auto findset = s.find(2);if (findset != s.end()){ cout m {{1, 1000}, { 2, 2000 }}; auto findmap = m.find(2); if(findmap != m.end()){ cout second c++20에서 새로 추가 된 contains는 associate container의 내장함수로 찾으려는 키값을 넣으면 true, false로 그 key의 존재 여부를 알 수 있다. if (findset.contains(2)..
"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방향 비교 연산자)/우주선" 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..