std::ranges::concat_view<Views...>:: size
|
||||||||||||||||||||||
| Range primitives | |||||||
|
|||||||
| Range concepts | |||||||||||||||||||
|
|||||||||||||||||||
| Range factories | |||||||||
|
|||||||||
| Range adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||
| Helper items | |||||||||||||||||
|
|
||||||||||||||||
| Member functions | ||||
|
concat_view::size
|
||||
| Deduction guides | ||||
| Iterator | ||||
| Member functions | ||||
| Non-member functions | ||||
|
constexpr
auto
size
(
)
requires ( sized_range < Views > && ... ) ; |
(1) | (C++26부터) |
|
constexpr
auto
size
(
)
const
requires ( sized_range < const Views > && ... ) ; |
(2) | (C++26부터) |
요소의 개수를 반환합니다.
다음에 해당함:
return
std::
apply
(
[
]
(
auto
...
sizes
)
{
using
CT
=
ranges::
common_type_t
<
decltype
(
sizes
)
...
>
;
return
(
make-unsigned-like-t
<
CT
>
(
sizes
)
+
...
)
;
}
,
tuple-transform
(
ranges::
size
,
views_
)
)
;
.
목차 |
반환값
위에서 설명한 바와 같습니다.
복잡도
상수.
참고 사항
concat_view
의 복잡도는 상수 시간입니다 (일부 경우에는 연결하는 범위의 개수에 대한 선형 함수이지만, 이는 이 뷰의 정적으로 알려진 매개변수입니다). 이는 범위 개념에서 요구하는 시간 복잡도가 주어진 범위의 정적으로 알려진 매개변수가 아닌 전체 요소 개수(크기)에 대해 공식적으로 표현되기 때문입니다.
예제
예비 버전은 Compiler Explorer 에서 확인할 수 있습니다.
#include <cassert> #include <forward_list> #include <list> #include <ranges> int main() { constexpr static auto a = {1, 2}; constexpr static auto b = {1, 2, 3}; constexpr static auto c = {1, 2, 3, 4}; constexpr auto con{std::views::concat(a, b, c)}; static_assert(std::ranges::sized_range<decltype(con)>); static_assert(con.size() == 2 + 3 + 4); std::forward_list d = b; static_assert(not std::ranges::sized_range<std::forward_list<int>>); const auto cat{std::views::concat(b, c, d)}; static_assert(not std::ranges::sized_range<decltype(cat)>); // auto x = cat.size(); // error: cat is not sized_range because of d std::list e = c; const auto dog{std::views::concat(a, b, e)}; static_assert(std::ranges::sized_range<decltype(dog)>); assert(dog.size() == 2 + 3 + 4); }
참고 항목
|
(C++20)
|
범위의 크기와 같은 정수를 반환합니다
(customization point object) |
|
(C++20)
|
범위의 크기와 같은 부호 있는 정수를 반환합니다
(customization point object) |