std::gslice
Aus cppreference.com
![]() | This page has been machine-translated from the English version of the wiki using Google Translate. The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
definiert in Header <valarray> | ||
class gslice; | ||
std::gslice
ist der Selektor Klasse, die eine Teilmenge von std::valarray Indizes nach einer mehrstufigen Satz von Schritten und Größen definiert identifiziert. Objekte des Typs std::gslice
als Indizes mit den valarray operator[]
kann verwendet werden, um auszuwählen, beispielsweise Spalten einer multidimensionalen Array als valarray
dargestellt .Original:
std::gslice
is the selector class that identifies a subset of std::valarray indices defined by a multi-level set of strides and sizes. Objects of type std::gslice
can be used as indices with valarray's operator[]
to select, for example, columns of a multidimensional array represented as a valarray
.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Angesichts der Startwert s, eine Liste von Schritten i
j und eine Liste von Größen d
j wählt ein
j=s+Σ
j(i
jd
j) .
j und eine Liste von Größen d
j wählt ein
std::gslice
aus diesen Werten aufgebaut des Satzes von Indizes kj=s+Σ
j(i
jd
j) .
Original:
Given the starting value s, a list of strides i
j and a list of sizes d
j, a
j=s+Σ
j(i
jd
j).
j and a list of sizes d
j, a
std::gslice
constructed from these values selects the set of indices kj=s+Σ
j(i
jd
j).
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Zum Beispiel erzeugt ein GSlice mit Startindex
3
schreitet {19,4,1
} und Längen {2,4,3}
den folgenden Satz von Indizes:Original:
For example, a gslice with starting index
3
, strides {19,4,1
} and lengths {2,4,3}
generates the following set of indices:The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
3+0*19+0*4+0*1=3,
3+0*19+0*4+1*1=4,
3+0*19+0*4+2*1=5,
3+0*19+1*4+0*1=7,
3+0*19+1*4+1*1=8,
...
3+1*19+3*4+2*1=36
Es ist möglich, Objekte, die einige
std::gslice
Indizes auszuwählen mehr als einmal zu konstruieren: wenn das obige Beispiel verwendet den Schritten {1,1,1}
die Indizes würde {3, 4, 5, 4, 5, 6, ...}
gewesen. Solche gslices darf nur als Argumente für die const-Version von std::valarray::operator[]
verwendet werden, da sonst das Verhalten undefiniert ist .Original:
It is possible to construct
std::gslice
objects that select some indices more than once: if the above example used the strides {1,1,1}
, the indices would have been {3, 4, 5, 4, 5, 6, ...}
. Such gslices may only be used as arguments to the const version of std::valarray::operator[]
, otherwise the behavior is undefined.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[Bearbeiten]Member-Funktionen
konstruiert eine GSlice Original: constructs a gslice The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (öffentliche Elementfunktion) | |
greift auf den Beginn des GSlice Original: accesses the start of the gslice The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (öffentliche Elementfunktion) | |
greift auf die Reihe von Schritten der GSlice Original: accesses the array of strides of the gslice The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (öffentliche Elementfunktion) | |
greift das Array von sizees der GSlice Original: accesses the array of sizees of the gslice The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (öffentliche Elementfunktion) |
[Bearbeiten]Beispiel
zeigt die Verwendung von gslices zum Spalten eines 3D-Feld anzusprechen
Original:
demonstrates the use of gslices to address columns of a 3D array
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
#include <iostream>#include <valarray>void test_print(std::valarray<int>& v, int rows, int cols, int planes){for(int r=0; r<rows;++r){for(int c=0; c<cols;++c){for(int z=0; z<planes;++z)std::cout<< v[r*cols*planes + c*planes + z]<<' ';std::cout<<'\n';}std::cout<<'\n';}}int main(){std::valarray<int> v =// 3d array: 2 x 4 x 3 elements{111,112,113 , 121,122,123 , 131,132,133 , 141,142,143, 211,212,213 , 221,222,223 , 231,232,233 , 241,242,243};// int ar3d[2][4][3]std::cout<<"Initial 2x4x3 array:\n"; test_print(v, 2, 4, 3); // update every value in the first columns of both planes v[std::gslice(0, {2, 4}, {4*3, 3})]=1;// two level one strides of 12 elements// then four level two strides of 3 elements // subtract the third column from the second column in the 1st plane v[std::gslice(1, {1, 4}, {4*3, 3})]-= v[std::gslice(2, {1, 4}, {4*3, 3})]; std::cout<<"After column operations: \n"; test_print(v, 2, 4, 3);}
Output:
Initial 2x4x3 array: 111 112 113 121 122 123 131 132 133 141 142 143 211 212 213 221 222 223 231 232 233 241 242 243 After column operations: 1 -1 113 1 -1 123 1 -1 133 1 -1 143 1 212 213 1 222 223 1 232 233 1 242 243
[Bearbeiten]Siehe auch
get / set valarray Element, Scheibe, oder Maske Original: get/set valarray element, slice, or mask The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (öffentliche Elementfunktion) | |
BLAS-ähnliche Scheibe eines valarray: Startindex, Länge, Schritt Original: BLAS-like slice of a valarray: starting index, length, stride The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (Klasse) | |
Proxy auf eine Teilmenge eines valarray nach Anwendung eines GSlice Original: proxy to a subset of a valarray after applying a gslice The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (Klassen-Template) |