QSpan Class
template <typename T, std::size_t E = std::size_t(-1)> class QSpan인접한 데이터에 대한 비소유 컨테이너. 더 보기...
헤더: | #include <QSpan> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
이후: | Qt 6.7 |
참고: 이 클래스의 모든 함수는 재인용됩니다.
공용 형
const_iterator | |
const_pointer | |
const_reference | |
const_reverse_iterator | |
difference_type | |
element_type | |
iterator | |
pointer | |
reference | |
reverse_iterator | |
size_type | |
value_type |
공용 함수
QSpan() | |
QSpan(QSpan<S, N> other) | |
QSpan(Range &&r) | |
QSpan(const std::array<S, N> &arr) | |
QSpan(q20::type_identity_t<T> (&)[N] arr) | |
QSpan(std::array<S, N> &arr) | |
QSpan(std::initializer_list<QSpan<T, E>::value_type> il) | |
QSpan(std::span<S, N> other) | |
QSpan(It first, It last) | |
QSpan(It first, qsizetype count) | |
QSpan(const QSpan<T, E> &other) | |
QSpan(QSpan<T, E> &&other) | |
~QSpan() | |
auto | back() const |
auto | begin() const |
auto | cbegin() const |
auto | cend() const |
auto | crbegin() const |
auto | crend() const |
auto | data() const |
auto | empty() const |
auto | end() const |
auto | first() const |
auto | first(QSpan<T, E>::size_type n) const |
auto | front() const |
auto | isEmpty() const |
auto | last() const |
auto | last(QSpan<T, E>::size_type n) const |
auto | rbegin() const |
auto | rend() const |
auto | size() const |
auto | size_bytes() const |
auto | sliced(QSpan<T, E>::size_type pos) const |
auto | sliced(QSpan<T, E>::size_type pos, QSpan<T, E>::size_type n) const |
auto | subspan() const |
auto | subspan() const |
auto | subspan(QSpan<T, E>::size_type pos) const |
auto | subspan(QSpan<T, E>::size_type pos, QSpan<T, E>::size_type n) const |
QSpan<T, E> & | operator=(QSpan<T, E> &&other) |
QSpan<T, E> & | operator=(const QSpan<T, E> &other) |
QSpan<T, E>::reference | operator[](QSpan<T, E>::size_type idx) const |
정적 공용 멤버
const std::size_t | extent |
관련 비회원
(since 6.8) auto | as_bytes(QSpan<T, E> s) |
(since 6.8) auto | as_writable_bytes(QSpan<T, E> s) |
상세 설명
QSpan은 다른 인접한 컨테이너의 인접한 부분을 참조합니다. QList 또는 std::vector와 같은 소유 컨테이너를 먼저 구성할 필요 없이 모든 종류의 인접한 컨테이너에 대한 인터페이스 유형으로 작동합니다.
QSpan이 참조하는 데이터는 배열(또는 QList, std::vector, QVarLengthArray 등과 같은 배열 호환 데이터 구조)로 표현될 수 있습니다. QSpan 자체는 데이터에 대한 포인터를 저장할 뿐이므로 사용자는 QSpan 객체가 참조하는 데이터보다 오래 지속되지 않도록 해야 합니다.
QStringView, QLatin1StringView 및 QUtf8StringView 와 같은 뷰와 달리 참조된 데이터는 QSpan 개체를 통해 수정할 수 있습니다. 이를 방지하려면 const T
( Const and Mutable Spans 참조 ) 위에 QSpan을 구성하세요:
int numbers[] = {0, 1, 2}; QSpan<int> span = numbers; span[0] = 42; // numbers == {42, 1, 2}; QSpan<const int> cspan = numbers; cspan[0] = 0; // ERROR: cspan[0] is read-only
가변 크기 및 고정 크기 스팬
QSpan은 고정 크기 또는 가변 크기일 수 있습니다.
가변 크기 스팬은 위의 예제에서 볼 수 있듯이 두 번째 템플릿 인수를 생략하거나 std::dynamic_extent
으로 설정하여 구성합니다(단, C++20 빌드에서만 사용 가능).
고정 크기 스팬은 두 번째 템플릿 인수로 숫자를 전달하여 형성됩니다:
이름에서 알 수 있듯이 고정 크기 스팬의 size()는 컴파일 타임에 고정되는 반면 가변 크기 스팬의 size()은 런타임에만 결정됩니다.
고정 크기 스팬은 기본적으로 구성할 수 없습니다( extent 이 0이 아닌 경우). 가변 크기 스팬은 기본적으로 구성 가능하며 data() == nullptr
및 size() == 0
을 갖습니다.
고정 크기 스팬은 암시적으로 가변 크기 스팬으로 변환할 수 있습니다. 반대 방향(가변 길이에서 고정 길이로의 변환)에는 두 스팬의 크기가 일치해야 한다는 전제 조건이 있습니다.
상수 및 가변 스팬
컨테이너를 소유하는 경우와 달리, const
은 QSpan에서 얕습니다. const QSpan을 통해 데이터를 수정할 수 있지만 QSpan<const T>
을 통해서는 불가능하며 begin() 및 end()은 const
/non-const
에서 오버로드되지 않습니다. 하지만 cbegin() 및 cend()은 T
이 const가 아니더라도 데이터 수정을 방지하는 const_iterator를 반환합니다:
int numbers[] = {0, 1, 2}; const QSpan<int> span = numbers; span.front() = 42; // OK, numbers[0] == 42 now *span.begin() = 31; // OK, numbers[0] == 31 now *span.cbegin() = -1; // ERROR: cannot assign through a const_iterator
기타 속성
QSpan은 참조-대-const가 아닌 값으로 전달해야 합니다:
void consume(QSpan<const int> data); // OK void consume(const QSpan<const int> &data); // works, but is non-idiomatic and less efficient
QSpan<T,N>
가 리터럴 타입인지 여부에 관계없이 T
가 리터럴 타입인지 여부에 관계없이.
QSpan과 std::span 비교
QSpan은 std::span과 매우 유사하게 모델링되어 있지만 여기서는 몇 가지 차이점이 있습니다. 둘 다 암시적으로 서로 변환되므로 코드에서 가장 마음에 드는 것을 자유롭게 선택할 수 있습니다.
- QSpan은
size_type
로 부호화된 qsizetype을 사용하는 반면std::span
은size_t
을 사용합니다. - 모든 QSpan 생성자는 암시적입니다. 많은
std::span
생성자는explicit
입니다. - QSpan은 컨테이너를 소유하는 rvalue로 구성할 수 있지만
std::span
는 그렇지 않습니다.
마지막 두 가지는 컨테이너를 소유하는 함수가 대신 QSpan을 사용하도록 변환될 때 소스 호환성을 위해 필요하며, 이는 Qt에서 매우 중요한 유스케이스입니다. qsizetype의 사용은 나머지 Qt 컨테이너와의 일관성을 위한 것입니다. 불필요한 에러 조건(음수 크기)을 피하기 위해 QSpan 템플릿 인수는 여전히 size_t를 사용합니다.
호환 가능한 이터레이터
이터레이터가 호환 가능한 이터레이터인 경우 QSpan은 이터레이터와 크기 또는 이터레이터 쌍으로 구성할 수 있습니다. 결국 이것은 C++20 std::contiguous_iterator
과 std::sentinel_for
을 의미하지만, Qt는 여전히 C++17 을 지원하지만, 원시 포인터만 연속된 이터레이터로 간주됩니다.
호환 가능한 범위
QSpan은 호환 가능한 범위로 구성할 수도 있습니다. 범위는 compatible iterators 이 있으면 호환됩니다.
QList, QStringView, QLatin1StringView, QUtf8StringView도 참조하세요 .
멤버 유형 문서
[alias]
QSpan::const_iterator
각각 const T*
및 const_pointer
의 별칭입니다.
const_pointer, iterator, const_reverse_iterator, Const and Mutable Spans도 참조하세요 .
[alias]
QSpan::const_pointer
const T*
및 const element_type*
의 별칭입니다.
이 별칭은 STL과의 호환성을 위해 제공됩니다.
element_type, pointer, const_reference, const_iterator, Const and Mutable Spans도 참조하세요 .
[alias]
QSpan::const_reference
const T&
및 const element_type&
의 별칭입니다.
이 별칭은 STL과의 호환성을 위해 제공됩니다.
element_type, reference, const_pointer, Const and Mutable Spans도 참조하세요 .
[alias]
QSpan::const_reverse_iterator
std::reverse_iterator<const_iterator>
의 별칭입니다.
const_iterator, reverse_iterator, Const and Mutable Spans도 참조하세요 .
[alias]
QSpan::difference_type
qptrdiff의 별칭입니다. 이 differs from std::span
.
이 별칭은 STL과의 호환성을 위해 제공됩니다.
[alias]
QSpan::element_type
T
의 별칭입니다. const
를 포함합니다(있는 경우).
이 별칭은 STL과의 호환성을 위해 제공됩니다.
value_type, pointer, Const and Mutable Spans도 참조하세요 .
[alias]
QSpan::iterator
각각 T*
및 pointer
의 별칭입니다. const
를 포함합니다.
pointer, const_iterator, reverse_iterator, Const and Mutable Spans도 참조하세요 .
[alias]
QSpan::pointer
각각 T*
및 element_type*
의 별칭입니다. const
를 포함합니다(있는 경우).
이 별칭은 STL과의 호환성을 위해 제공됩니다.
element_type, const_pointer, reference, iterator, Const and Mutable Spans도 참조하세요 .
[alias]
QSpan::reference
각각 T&
및 element_type&
의 별칭입니다. const
를 포함합니다(있는 경우).
이 별칭은 STL과의 호환성을 위해 제공됩니다.
element_type, const_reference, pointer, Const and Mutable Spans도 참조하세요 .
[alias]
QSpan::reverse_iterator
std::reverse_iterator<iterator>
의 별칭입니다. const
를 포함합니다.
iterator, const_reverse_iterator, Const and Mutable Spans도 참조하세요 .
[alias]
QSpan::size_type
qsizetype의 별칭입니다. 이 differs from std::span
.
이 별칭은 STL과의 호환성을 위해 제공됩니다.
[alias]
QSpan::value_type
T
의 별칭입니다. const
를 제외합니다.
이 별칭은 STL과의 호환성을 위해 제공됩니다.
element_type 및 Const and Mutable Spans도 참조하세요 .
멤버 함수 문서
[default]
QSpan::QSpan(QSpan<T, E> &&other)
[default]
QSpan::QSpan(const QSpan<T, E> &other)
[default]
QSpan<T, E> &QSpan::operator=(QSpan<T, E> &&other)
[default]
QSpan<T, E> &QSpan::operator=(const QSpan<T, E> &other)
[default]
QSpan::~QSpan()
이러한 특수 멤버 함수는 암시적으로 정의되어 있습니다.
[constexpr noexcept]
template <typename S, size_t N, QSpan<T, E>::if_qualification_conversion<S> = true> QSpan::QSpan(const std::array<S, N> &arr)
[constexpr noexcept]
template <size_t N> QSpan::QSpan(q20::type_identity_t<T> (&)[N] arr)
[constexpr noexcept]
template <typename S, size_t N, QSpan<T, E>::if_qualification_conversion<S> = true> QSpan::QSpan(std::array<S, N> &arr)
제공된 배열의 데이터를 참조하는 QSpan 을 생성합니다 arr.
참고: 이 생성자는 다음과 같은 경우에만 과부하 해결에 참여합니다.
N
또는 extent 이std::dynamic_extent
이거나, 그렇지 않으면 extent==
N
- 와 같고
S
또는const S
이T
와 같은 경우에만 과부하 해결에 참여합니다.
참고: q20::type_identity_t
는 C++20 의 C++17 백포트입니다. std::type_identity_t
.
[constexpr noexcept]
template <typename S, size_t N, QSpan<T, E>::if_qualification_conversion<S> = true> QSpan::QSpan(QSpan<S, N> other)
[constexpr noexcept]
template <typename S, size_t N, QSpan<T, E>::if_qualification_conversion<S> = true> QSpan::QSpan(std::span<S, N> other)
제공된 스팬의 데이터를 참조하는 QSpan 을 생성합니다 other.
참고: 이 생성자는 다음과 같은 경우에만 과부하 해결에 참여합니다.
스팬이 비어 있는지 여부, 즉 size() == 0
를 반환합니다.
이 함수는 동일한 기능을 수행합니다: empty()는 STL 호환성을 위해 제공되고 isEmpty()는 Qt 호환성을 위해 제공됩니다.
size() 및 size_bytes()도 참조하십시오 .
[constexpr]
auto QSpan::sliced(QSpan<T, E>::size_type pos) const
[constexpr]
auto QSpan::subspan(QSpan<T, E>::size_type pos) const
첫 번째 pos 요소를 삭제한 후 이 스팬의 나머지 부분을 참조하는 size() - pos
크기의 variable-sized 스팬을 반환합니다.
pos 는 음수가 아니어야 합니다.
이 스팬은 최소 pos 요소(E
>= pos 및 size() >= pos)를 포함해야 하며, 그렇지 않으면 동작이 정의되지 않습니다.
subspan()는 STL 호환성을 위해 제공되고 sliced()는 Qt XML 호환성을 위해 제공됩니다.
subspan(), first(QSpan<T,E>::size_type) 및 last(QSpan<T,E>::size_type)도 참조하세요 .
[constexpr]
auto QSpan::sliced(QSpan<T, E>::size_type pos, QSpan<T, E>::size_type n) const
[constexpr]
auto QSpan::subspan(QSpan<T, E>::size_type pos, QSpan<T, E>::size_type n) const
pos 에서 시작하는 이 스팬의 n 요소를 참조하는 n 크기의 variable-sized 스팬을 반환합니다.
pos 와 n 는 모두 음수가 아니어야 합니다.
이 스팬은 최소 pos + n
요소(E
>= pos + n
및 size() >= pos + n
)를 포함해야 하며, 그렇지 않으면 동작이 정의되지 않습니다.
subspan()는 STL 호환성을 위해 제공되고 sliced()는 Qt XML 호환성을 위해 제공됩니다.
subspan(), first(QSpan<T,E>::size_type) 및 last(QSpan<T,E>::size_type)도 참조하세요 .
[default]
QSpan::QSpan()
기본 생성자입니다.
이 생성자는 E
가 영(0) 또는 std::dynamic_extent
인 경우에만 존재합니다. 즉, 고정 0 크기 또는 가변 크기 스팬만 기본적으로 생성할 수 있습니다.
extent 및 Variable-Size and Fixed-Size Spans 을참조하세요 .
[constexpr]
template <typename Range, QSpan<T, E>::if_compatible_range<Range> = true> QSpan::QSpan(Range &&r)
제공된 범위의 데이터를 참조하는 QSpan을 생성합니다 r.
참고: 이 생성자는 Range
이 a compatible range 인 경우에만 과부하 해결에 참여합니다.
[constexpr]
QSpan::QSpan(std::initializer_list<QSpan<T, E>::value_type> il)
제공된 이니셜라이저 목록 il 에 있는 데이터를 참조하여 QSpan을 생성합니다.
참고: 이 생성자는 T
이 const
-적격인 경우에만 과부하 해결에 참여합니다.
참고: E
이 std::dynamic_extent
인 경우에만 이 생성자는 noexcept
입니다.
참고: E
이 std::dynamic_extent
이 아니고 il 의 크기가 E
이 아닌 경우 동작이 정의되지 않습니다.
Const and Mutable Spans도 참조하세요 .
[constexpr]
template <typename It, QSpan<T, E>::if_compatible_iterator<It> = true> QSpan::QSpan(It first, It last)
first 에서 시작하고 길이가 (last - first) 인 데이터를 참조하는 QSpan을 구성합니다.
[first, last)
는 유효한 범위여야 합니다.
참고: 이 생성자는 It
가 a compatible iterator 인 경우에만 과부하 해결에 참여합니다.
[constexpr]
template <typename It, QSpan<T, E>::if_compatible_iterator<It> = true> QSpan::QSpan(It first, qsizetype count)
first 에서 시작하고 길이가 count 인 데이터를 참조하는 QSpan을 구성합니다.
[first, count)
는 유효한 범위여야 합니다.
참고: 이 생성자는 It
가 a compatible iterator 인 경우에만 과부하 해결에 참여합니다.
[constexpr]
auto QSpan::back() const
스팬의 마지막 요소에 대한 참조를 반환합니다.
스팬이 비어 있지 않아야 하며, 그렇지 않으면 동작이 정의되지 않습니다.
operator[](), front(), size(), empty() 및 Const and Mutable Spans 를참조하세요 .
[constexpr noexcept]
auto QSpan::begin() const
스팬의 시작을 가리키는 인터레이터를 반환합니다.
QSpan 이터레이터는 포인터일 뿐이므로 data()을 호출하는 것과 동일합니다.
end(), cbegin(), rbegin(), crbegin(), data() 및 Const and Mutable Spans도 참조하세요 .
[constexpr noexcept]
auto QSpan::cbegin() const
스팬의 시작을 가리키는 const_iterator 을 반환합니다.
T
이 const
이 아닌 경우에도 읽기 전용 이터레이터를 반환합니다:
QSpan<int> span = ~~~; *span.begin() = 42; // OK *span.cbegin() = 42; // ERROR: cannot assign through a const_iterator
cend(), begin(), crbegin(), rbegin(), data() 및 Const and Mutable Spans도 참조하세요 .
[constexpr noexcept]
auto QSpan::cend() const
스팬의 끝을 가리키는 const_iterator 을 반환합니다.
cbegin(), end(), crend(), rend(), data(), size() 및 Const and Mutable Spans도 참조하세요 .
[constexpr noexcept]
auto QSpan::crbegin() const
반전된 스팬의 시작을 가리키는 const_reverse_iterator 을 반환합니다.
crend(), rbegin(), cbegin(), begin() 및 Const and Mutable Spans도 참조하세요 .
[constexpr noexcept]
auto QSpan::crend() const
역방향 스팬의 끝을 가리키는 const_reverse_iterator 을 반환합니다.
crbegin(), rend(), cend(), end() 및 Const and Mutable Spans도 참조하세요 .
[constexpr noexcept]
auto QSpan::data() const
스팬의 시작 부분에 대한 포인터를 반환합니다.
begin()를 호출하는 것과 동일합니다.
begin(), front() 및 Const and Mutable Spans 를참조하세요 .
[constexpr noexcept]
auto QSpan::end() const
스팬의 끝을 가리키는 이터레이터를 반환합니다.
QSpan 이터레이터는 포인터일 뿐이므로 data() + size()
을 호출하는 것과 동일합니다.
begin(), cend(), rend(), crend(), data(), size(), Const and Mutable Spans도 참조하세요 .
[constexpr noexcept(...)]
template <std::size_t Count> auto QSpan::first() const
*this
의 첫 번째 Count
요소를 참조하는 Count
크기의 fixed-sized 스팬을 반환합니다.
스팬은 최소 Count
요소(E
>= Count
및 size() >= Count
)를 포함해야 하며, 그렇지 않으면 동작이 정의되지 않습니다.
참고: 이 함수는 subspan_always_succeeds_v<Count>
가 true
인 경우를 제외하고는 작동하지 않습니다.
first(QSpan<T,E>::size_type), last() 및 subspan()도 참조하세요 .
[constexpr]
auto QSpan::first(QSpan<T, E>::size_type n) const
*this
의 첫 번째 n 요소를 참조하는 n 크기의 variable-sized 스팬을 반환합니다.
n 는 음수가 아니어야 합니다.
스팬은 최소 n 요소(E
>= n 및 size() >= n)를 포함해야 하며, 그렇지 않으면 동작이 정의되지 않습니다.
first<N>(), last(QSpan<T,E>::size_type), subspan(QSpan<T,E>::size_type), subspan(QSpan<T,E>::size_type, QSpan<T,E>::size_type) 및 sliced()도 참조하세요 .
[constexpr]
auto QSpan::front() const
스팬의 첫 번째 요소에 대한 참조를 반환합니다.
스팬이 비어 있지 않아야 하며, 그렇지 않으면 동작이 정의되지 않습니다.
operator[](), back(), size(), empty() 및 Const and Mutable Spans 를참조하세요 .
[constexpr noexcept(...)]
template <std::size_t Count> auto QSpan::last() const
*this
의 마지막 Count
요소를 참조하는 Count
크기의 fixed-sized 스팬을 반환합니다.
스팬은 최소 Count
요소(E
>= Count
및 size() >= Count
)를 포함해야 하며, 그렇지 않으면 동작이 정의되지 않습니다.
참고: 이 함수는 subspan_always_succeeds_v<Count>
가 true
인 경우를 제외하고는 작동하지 않습니다.
last(QSpan<T,E>::size_type), first() 및 subspan()도 참조하세요 .
[constexpr]
auto QSpan::last(QSpan<T, E>::size_type n) const
*this
의 마지막 n 요소를 참조하는 n 크기의 variable-sized 스팬을 반환합니다.
n 는 음수가 아니어야 합니다.
스팬은 최소 n 요소(E
>= n 및 size() >= n)를 포함해야 하며, 그렇지 않으면 동작이 정의되지 않습니다.
last(), first(QSpan<T,E>::size_type), subspan(QSpan<T,E>::size_type), subspan(QSpan<T,E>::size_type, QSpan<T,E>::size_type) 및 sliced()도 참조하세요 .
[constexpr noexcept]
auto QSpan::rbegin() const
반전된 스팬의 시작을 가리키는 reverse_iterator 을 반환합니다.
rend(), crbegin(), begin(), cbegin() 및 Const and Mutable Spans도 참조하세요 .
[constexpr noexcept]
auto QSpan::rend() const
역방향 스팬의 끝을 가리키는 reverse_iterator 을 반환합니다.
rbegin(), crend(), end(), cend() 및 Const and Mutable Spans도 참조하세요 .
[constexpr noexcept]
auto QSpan::size() const
스팬의 크기, 즉 참조하는 요소의 수를 반환합니다.
size_bytes(), empty() 및 isEmpty()도 참조하세요 .
[constexpr noexcept]
auto QSpan::size_bytes() const
스팬의 크기, 즉 요소 수에 sizeof(T)
을 곱한 값을 바이트 단위로 반환합니다.
size(), empty() 및 isEmpty()도 참조하세요 .
[constexpr noexcept(...)]
template <std::size_t Offset, std::size_t Count> auto QSpan::subspan() const
Offset
에서 시작하는 이 스팬의 Count
요소를 참조하는 Count
크기의 스팬을 반환합니다.
*this
이 가변 크기 스팬인 경우 반환 유형은 가변 크기 스팬이고, 그렇지 않으면 고정 크기 스팬입니다.
이 스팬은 최소 Offset + Count
요소(E
>= Offset + Count
및 size() >= Offset + Count
)를 포함해야 하며, 그렇지 않으면 동작이 정의되지 않습니다.
참고: 이 함수는 subspan_always_succeeds_v<Offset + Count>
가 true
인 경우를 제외하고는 작동하지 않습니다.
subspan(QSpan<T,E>::size_type, QSpan<T,E>::size_type), subspan(), first(), last() 및 Variable-Size and Fixed-Size Spans도 참조하세요 .
[constexpr noexcept(...)]
template <std::size_t Offset> auto QSpan::subspan() const
첫 번째 Offset
요소를 삭제한 후 이 스팬의 나머지 부분을 참조하는 E - Offset
크기의 스팬을 반환합니다.
*this
이 가변 크기 스팬인 경우 반환 유형은 가변 크기 스팬이고, 그렇지 않으면 고정 크기 스팬입니다.
이 스팬은 최소 Offset
요소(E
>= Offset
및 size() >= Offset
)를 포함해야 하며, 그렇지 않으면 동작이 정의되지 않습니다.
참고: 이 함수는 subspan_always_succeeds_v<Offset>
가 true
인 경우를 제외하고는 작동하지 않습니다.
subspan(QSpan<T,E>::size_type), subspan(), first(), last() 및 Variable-Size and Fixed-Size Spans도 참조하세요 .
[constexpr]
QSpan<T, E>::reference QSpan::operator[](QSpan<T, E>::size_type idx) const
스팬의 idx 인덱스에 있는 요소에 대한 참조를 반환합니다.
인덱스는 idx >= 0 및 idx < size() 범위 내에 있어야 하며, 그렇지 않으면 동작이 정의되지 않습니다.
front(), back(), size(), empty() 및 Const and Mutable Spans 를참조하세요 .
멤버 변수 문서
const std::size_t QSpan::extent
QSpan<T, E>
의 두 번째 템플릿 인수, 즉 E
입니다. variable-sized spans 의 경우 std::dynamic_extent
입니다.
참고: QSpan 의 다른 모든 크기와 인덱스는 qsizetype을 사용하지만, 이 변수는 E
과 같이 실제로는 size_t
유형이므로 std::span
및 std::dynamic_extent
과 호환됩니다.
size()도 참조하세요 .
관련 비회원
[noexcept, since 6.8]
auto as_bytes(QSpan<T, E> s)
s 를 size()가 s.size_bytes()
와 같은 QSpan<const std::byte, E'>
로 반환합니다.
E
가 std::dynamic_extent
인 경우 E'
도 마찬가지입니다. 그렇지 않으면 E' = E * sizeof(T)
입니다.
참고: q20::dynamic_extent
는 C++20의 C++17 백포트입니다. std::dynamic_extent
.
이 함수는 Qt 6.8에 도입되었습니다.
as_writable_bytes(), size_bytes() 및 Const and Mutable Spans 를참조하십시오 .
[noexcept, since 6.8]
auto as_writable_bytes(QSpan<T, E> s)
s 를 size()가 s.size_bytes()
와 같은 QSpan<std::byte, E'>
로 반환합니다.
E
가 std::dynamic_extent
인 경우 E'
도 마찬가지입니다. 그렇지 않으면 E' = E * sizeof(T)
입니다.
참고: 이 함수는 !std::is_const_v<T>
인 경우에만 과부하 해결에 참여합니다.
참고: q20::dynamic_extent
는 C++20 의 C++17 백포트입니다. std::dynamic_extent
.
이 함수는 Qt 6.8에 도입되었습니다.
as_bytes(), size_bytes() 및 Const and Mutable Spans 를참조하십시오 .
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.