Namensräume
Varianten
Aktionen

std::experimental::split, split_by

Von cppreference.com
< cpp‎ | experimental‎ | simd
 
 
 
 
 
Definiert in Header <experimental/simd>
template< std::size_t... Sizes, class T, class Abi >

std::tuple<simd<T, simd_abi::deduce_t<T, Sizes>>...>

    split( const simd<T, Abi>& v ) noexcept;
(1) (Parallelismus TS v2)
template< std::size_t... Sizes, class T, class Abi >

std::tuple<simd_mask<T, simd_abi::deduce_t<T, Sizes>>...>

    split( const simd_mask<T, Abi>& v ) noexcept;
(2) (Parallelismus TS v2)
template< class V, class Abi >

std::array<V, simd_size_v<typename V::value_type, Abi> / V::size()>

    split( const simd<typename V::value_type, Abi>& v ) noexcept;
(3) (Parallelismus TS v2)
template< class V, class Abi >

std::array<V, simd_size_v<typename V::value_type, Abi> / V::size()>

    split( const simd_mask<typename V::value_type, Abi>& v ) noexcept;
(4) (Parallelismus TS v2)
template< size_t N, class T, class A >

array<resize_simd<simd_size_v<T, A> / N, simd<T, A>>, N>

    split_by( const simd<T, A>& v ) noexcept;
(5) (Parallelismus TS v2)
template< size_t N, class T, class A >

array<resize_simd<simd_size_v<T, A> / N, simd_mask<T, A>>, N>

    split_by( const simd_mask<T, A>& v ) noexcept;
(6) (Parallelismus TS v2)

Teilt das Eingabeobjekt vom Typ simd oder simd_mask in mehrere Objekte vom Typ simd oder simd_mask auf.

1,2) Teilt das Eingabeobjekt in Objekte potenziell unterschiedlicher Typen (z. B. Typen mit unterschiedlichen Größen) auf. Diese Funktionen nehmen nicht an der Überladungsauflösung teil, es sei denn, die Summe von Sizes... ist gleich v.size().
3,4) Teilt das Eingabeobjekt in ein Array von Objekten auf. Diese Funktionen nehmen nicht an der Überladungsauflösung teil, es sei denn,
  • Das Array-Element muss vom Typ simd oder simd_mask sein, entsprechend dem Typ von v als simd oder simd_mask.
  • simd_size_v<typename V::value_type, Abi> ist ein ganzzahliges Vielfaches von V::size().
5,6) Teilt das Eingabeobjekt in ein Array von Objekten auf. Diese Funktionen dürfen nicht an der Überladungsauflösung teilnehmen, es sei denn, simd_size_v<T, A> ist ein ganzzahliges Vielfaches von N.

[bearbeiten] Parameter

v - das Eingabeobjekt vom Typ simd oder simd_mask

[bearbeiten] Rückgabewert

1,2) Ein Tupel, das die aufgeteilten simd- oder simd_mask-Objekte enthält.
3-6) Ein Array, das die aufgeteilten simd- oder simd_mask-Objekte enthält.

[bearbeiten] Beispiel