drop_while_view
클래스(C++ 표준 라이브러리)
조건자와 일치하는 선행 요소가 삭제되면 남아 있는 범위의 요소가 들어 있는 뷰입니다.
구문
template<ranges::view V, class P>
requires ranges::input_range<V> &&
std::is_object_v<P> &&
std::indirect_unary_predicate<const P, ranges::iterator_t<V>>
class drop_while_view : public ranges::view_interface<drop_while_view<V, P>>;
템플릿 매개 변수
V
기본 뷰의 형식입니다.
P
삭제할 선행 요소를 결정하는 조건자의 형식입니다.
특성 보기
다음 항목에 대한 설명은 클래스 특성 보기를 참조 하세요.
특성 | 설명 |
---|---|
범위 어댑터 | views::drop_while |
기본 범위 | 만족 forward_range 해야 하고 기본 범위의 반복기를 모델링해야 합니다. sized_sentinel_for |
요소 형식 | 기본 범위와 동일 |
반복기 범주 보기 | 기본 범위와 동일 |
크기 | 기본 범위가 충족되는 경우에만 random_access_range |
반복 const 가능 |
아니요 |
공통 범위 | 기본 범위가 충족되는 경우에만 common_range |
빌린 범위 | 기본 범위가 충족되는 경우에만 borrowed_range |
멤버
멤버 함수 | 설명 |
---|---|
생성자 | 뷰를 생성합니다. |
base |
기본 보기를 가져옵니다. |
begin |
첫 번째 요소에 대한 반복기를 가져옵니다. |
end |
보기의 끝에 있는 sentinel을 가져옵니다. |
pred |
삭제할 요소를 결정하는 조건자 참조를 가져옵니다. |
view_interface 상속 | 설명 |
back C++20 |
마지막 요소를 가져옵니다. |
data C++20 |
첫 번째 요소에 대한 포인터를 가져옵니다. |
empty C++20 |
보기가 비어 있는지 테스트합니다. |
front C++20 |
첫 번째 요소를 가져옵니다. |
operator[] C++20 |
지정된 위치에 있는 요소를 가져옵니다. |
operator bool C++20 |
보기가 비어 있지 않은지 테스트합니다. |
size |
보기의 요소 수를 가져옵니다. |
요구 사항
헤더: <ranges>
(C++20 이후)
네임스페이스: std::ranges
컴파일러 옵션: /std:c++20
이상이 필요합니다.
생성자
의 인스턴스를 생성합니다 drop_while_view
.
1) constexpr drop_while_view(V base, P pred);
2) drop_while_view() requires default_initializable<V> && default_initializable<P> = default;
매개 변수
base
기본 범위입니다.
pred
삭제할 선행 요소를 결정하는 조건자입니다.
템플릿 매개 변수 형식에 대한 자세한 내용은 템플릿 매개 변수를 참조 하세요.
반환 값
drop_while_view
인스턴스입니다.
설명
범위를 만드는 drop_while_view
가장 좋은 방법은 범위 어댑터를 사용하는 views::drop_while
것입니다. 범위 어댑터는 뷰 클래스를 만드는 데 사용되는 방법입니다. 사용자 고유의 사용자 지정 보기 형식을 만들려는 경우 보기 형식이 노출됩니다.
1) 이동은 뷰와 pred
조건자에서 base
구문을 생성합니다drop_while_view
. 둘 다 base
을 pred
통해 std::move()
이동됩니다.
2) Default-constructs a .drop_while_view
예: drop_while_view
// requires /std:c++20 or later
#include <ranges>
#include <vector>
#include <iostream>
void print(auto v)
{
for (auto& x : v)
{
std::cout << x << ' ';
}
std::cout << '\n';
}
int main()
{
std::vector<int> v{ 0, 1, 2, 3, -4, 5, 6 };
auto myView = std::views::drop_while(
v,
[](int i) {return i >= 0; });
print(myView); // -4 5 6
auto myView2 = v | std::views::drop_while(
[](int i) {return i < 5; });
print(myView2); // 5 6
}
-4 5 6
5 6
base
기본 보기를 가져옵니다.
// Uses a copy constructor to return the underlying view
constexpr V base() const& requires std::copy_constructible<V>;
// Uses std::move() to return the underlying view
constexpr V base() &&;
매개 변수
없음
반품
기본 보기입니다.
begin
뷰의 첫 번째 요소에 대한 반복기를 가져옵니다.
constexpr auto begin();
반환 값
뷰의 첫 번째 요소를 가리키는 반복기입니다. 뷰에 조건자가 없는 경우 동작이 정의되지 않습니다.
end
보기의 끝에 있는 sentinel을 가져옵니다.
constexpr auto end()
반환 값
뷰의 마지막 요소를 따르는 sentinel입니다.
pred
삭제할 선행 요소를 결정하는 조건자 참조를 가져옵니다.
constexpr const Pred& pred() const;
반환 값
조건자 참조입니다.
설명
보기에서 조건자를 저장하지 않으면 동작이 정의되지 않습니다.
본보기 pred
// requires /std:c++20 or later
#include <ranges>
#include <iostream>
#include <vector>
int main()
{
std::vector<int> v{ 0, 1, 2, 3, -4, 5, 6 };
auto mv = v | std::views::drop_while(
[](int i) {return i < 5; }); // drop the leading elements < 5
std::cout << std::boolalpha << mv.pred()(v[6]); // outputs "false" because v[6] = 6 and 6 is not less than 5 (the predicate)
}
false
참고 항목
<ranges>
drop_while
범위 어댑터
take_while
범위 어댑터
take_while_view
클래스 보기