목록C++ & C#/Modern C++ (4)
오보에블로그

Range 라이브러리 기존의 열거형 자료구조에 범위 관련 알고리즘을 추가한 라이브러리. (C# LINQ 와 비슷) range : 순회 할 수 있는 아이템 집합를 일컫는다. (ex STL Container) begin() , end() 가 가능해야함. iterator의 상위 호환 느낌인가 view : 아래에서 좀더 자세히 기술 range adoptor : | : range adoptor 오브젝트를 연결(파이프) View 독스도 찾아보고, 블로그도 찾아보았지만, 의미가 잘 와닿지 않아 좀더 찾아보았다. 참고 a view is a range that is semiregular and has constant time copy/move/assignment 뷰는 range의 is-a 관계라고 생각하면 된다. 집합의..
count , count_if template typename iterator_traits::difference_type count( InputIt first, InputIt last, const T& value ); 해당 값 또는 해당 조건식을 만족하는 데이터 개수 반환 vector v = { 1,2,3,4,5,4,3,2,1 }; cout
[C++20] Concepts library cpp 레퍼런스 홈페이지 에서 확인이 가능하다. Concepts 에 관한 내용은 이전 포스트 를 참고 바란다. std::same_as 또다른 타입과 서로 같은 타입인지 구현부 namespace detail { template concept SameHelper = std::is_same_v; } template concept same_as = detail::SameHelper && detail::SameHelper; 사용 예시 template void func(T t, U u) requires std::same_as // 같은 타입으로 안쓰면 오류는 안나오나, 호출시 통과가 안된다. { } ..
[C++20] Concept 개요 C# 에서는 클래스나 함수에다가 Where 절을 통해 제네릭 타입에 대해서 어떤 조건을 부여해줄 수 있었다 C++ 에서도 그와 비슷한 기능이 생겼다. 어떤 타입이 가져야하는 조건들을 정의하는 것이라고 보면 될 듯 하다. concept를 통해 선언 해주고, requires 등을 통해 사용할 수 있다. 사용 방법은 여러가지이다. concept : 제약/ 요구 조건을 기술 및 선언 requires : 해당 타입/템플릿이 가져야하는 제약 조건 지정 이런 제약 조건들은 컴파일 타임에 결정되어, 빌드는 느려질 지언정, 실제 프로그램 실행시에는 빠르게 연산된다. 즉, 컴파일 타임에 결정되는 제약 조건을 어떤 타입에 대해서 지정을 하는 것이다..! 예시 확인 예시를 확인해보자. 다음 ..