Класс gslice
Класс служебной valarray
программы, используемый для определения многомерных подмножеств valarray
. Если матрица valarray
с несколькими элементами массива считается многомерной, извлекает gslice
вектор из многомерного массива.
Замечания
Класс сохраняет параметры, характеризующие объект типа gslice_array
. Подмножество valarray
объекта создается косвенно, когда объект класса gslice
отображается в качестве аргумента для объекта класса valarray<Type>
. Сохраненные значения, указывающие подмножество, выбранное из родительского valarray
элемента, включают:
Начальный индекс.
Вектор длины класса
valarray<size_t>
.Шаг вектор класса
valarray<size_t>
.
Длина обоих векторов должна быть одинаковой.
Если заданный набором gslice
является подмножество константы valarray
, то gslice
он является новым valarray
. Если набор, определенный набором gslice
, является подмножеством неконстантного valarray
, то gslice
имеет семантику ссылки на исходный valarray
. Механизм оценки для неконстантных valarray
объектов экономит время и память.
Операции с valarray
объектами гарантируются только в том случае, если исходные и конечные подмножества, определенные gslice
объектами, отличаются и все индексы допустимы.
Конструкторы
Конструктор | Description |
---|---|
gslice |
Определяет подмножество valarray , состоящее из нескольких фрагментов valarray , начинающихся с указанного элемента. |
Функции элементов
Функция-член | Description |
---|---|
size |
Находит значения массива, указывающие количество элементов в общем срезе valarray . |
start |
Находит индекс начала общего среза valarray . |
stride |
Находит расстояние между элементами в общем срезе valarray . |
Требования
Заголовок:<valarray>
Пространство имен: std
gslice::gslice
Класс служебной valarray
программы, используемый для определения многомерных срезов valarray
.
gslice();
gslice(
size_t _StartIndex,
const valarray<size_t>& _LenArray,
const valarray<size_t>& _IncArray);
Параметры
_StartIndex
valarray
Индекс первого элемента в подмножестве.
_LenArray
Указание valarray
количества элементов в каждом gslice
элементе.
_IncArray
Указание valarray
шага в каждом gslice
из них.
Возвращаемое значение
Конструктор по умолчанию хранит нуль для начального индекса и векторы нулевой длины для векторов длины и шага. Второй конструктор хранит _StartIndex
для начального индекса, _LenArray
для массива длины и _IncArray
для массива шагов.
Замечания
gslice
определяет подмножество, valarray
состоящее из нескольких срезов valarray
каждого из которых начинается с одного и того же указанного элемента. Возможность использовать массивы для определения нескольких срезов является единственной разницей между gslice
и slice::slice
. Первый срез содержит первый элемент с индексом_StartIndex
, число элементов, указанных первым элементом, и шаг, заданный первым элементом_LenArray
_IncArray
. Следующий набор ортогональных срезов имеет первые элементы, задаваемые первом срезом. Второй элемент _LenArray
указывает число элементов. Шаг задается вторым элементом _IncArray
. Третье измерение срезов принимает элементы двухмерного массива в качестве начальных элементов и продолжается аналогично.
Пример
// gslice_ctor.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> va ( 20 ), vaResult;
for ( i = 0 ; i < 20 ; i+=1 )
va [ i ] = i;
cout << "The operand valarray va is:" << endl << "(";
for ( i = 0 ; i < 20 ; i++ )
cout << " " << va [ i ];
cout << " )" << endl;
valarray<size_t> Len ( 2 ), Stride ( 2 );
Len [0] = 4;
Len [1] = 4;
Stride [0] = 7;
Stride [1] = 4;
gslice vaGSlice ( 0, Len, Stride );
vaResult = va [ vaGSlice ];
cout << "The valarray for vaGSlice is vaResult:" << endl
<< "va[vaGSlice] = (";
for ( i = 0 ; i < 8 ; i++ )
cout << " " << vaResult [ i ];
cout << ")" << endl;
}
The operand valarray va is:
( 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 )
The valarray for vaGSlice is vaResult:
va[vaGSlice] = ( 0 4 8 12 7 11 15 19)
gslice::size
Находит значения массива, указывающие количество элементов в общем срезе valarray
.
valarray<size_t> size() const;
Возвращаемое значение
Указание valarray
количества элементов в каждом срезе общего среза valarray
.
Замечания
Функция-член возвращает сохраненные длины срезов.
Пример
// gslice_size.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
size_t sizeVA;
valarray<int> va ( 20 ), vaResult;
for ( i = 0 ; i < 20 ; i+=1 )
va [ i ] = i;
cout << "The operand valarray va is:\n ( ";
for ( i = 0 ; i < 20 ; i++ )
cout << va [ i ] << " ";
cout << ")." << endl;
sizeVA = va.size ( );
cout << "The size of the valarray is: "
<< sizeVA << "." << endl << endl;
valarray<size_t> Len ( 2 ), Stride ( 2 );
Len [0] = 4;
Len [1] = 4;
Stride [0] = 7;
Stride [1] = 4;
gslice vaGSlice ( 0, Len, Stride );
vaResult = va [ vaGSlice ];
const valarray <size_t> sizeGS = vaGSlice.size ( );
cout << "The valarray for vaGSlice is vaResult:"
<< "\n va[vaGSlice] = ( ";
for ( i = 0 ; i < 8 ; i++ )
cout << vaResult [ i ] << " ";
cout << ")." << endl;
cout << "The size of vaResult is:"
<< "\n vaGSlice.size ( ) = ( ";
for ( i = 0 ; i < 2 ; i++ )
cout << sizeGS[ i ] << " ";
cout << ")." << endl;
}
The operand valarray va is:
( 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ).
The size of the valarray is: 20.
The valarray for vaGSlice is vaResult:
va[vaGSlice] = ( 0 4 8 12 7 11 15 19 ).
The size of vaResult is:
vaGSlice.size ( ) = ( 4 4 ).
gslice::start
Находит индекс начала общего среза valarray
.
size_t start() const;
Возвращаемое значение
Начальный индекс общего среза valarray
.
Пример
// gslice_start.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> va ( 20 ), vaResult;
for (i = 0 ; i < 20 ; i+=1 )
va [ i ] = i;
cout << "The operand valarray va is:\n ( ";
for ( i = 0 ; i < 20 ; i++ )
cout << va [ i ] << " ";
cout << ")." << endl;
valarray<size_t> Len ( 2 ), Stride ( 2 );
Len [0] = 4;
Len [1] = 4;
Stride [0] = 7;
Stride [1] = 4;
gslice vaGSlice ( 0, Len, Stride );
vaResult = va [ vaGSlice ];
size_t vaGSstart = vaGSlice.start ( );
cout << "The valarray for vaGSlice is vaResult:"
<< "\n va[vaGSlice] = ( ";
for (i = 0 ; i < 8 ; i++ )
cout << vaResult [ i ] << " ";
cout << ")." << endl;
cout << "The index of the first element of vaResult is: "
<< vaGSstart << "." << endl;
}
The operand valarray va is:
( 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ).
The valarray for vaGSlice is vaResult:
va[vaGSlice] = ( 0 4 8 12 7 11 15 19 ).
The index of the first element of vaResult is: 0.
gslice::stride
Находит расстояние между элементами в общем срезе valarray
.
valarray<size_t> stride() const;
Возвращаемое значение
Указание valarray
расстояний между элементами в каждом срезе общего среза valarray
.
Пример
// gslice_stride.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> va ( 20 ), vaResult;
for (i = 0 ; i < 20 ; i+=1 )
va [ i ] = i;
cout << "The operand valarray va is:\n ( ";
for (i = 0 ; i < 20 ; i++ )
cout << va [ i ] << " ";
cout << ")." << endl;
valarray<size_t> Len ( 2 ), Stride ( 2 );
Len [0] = 4;
Len [1] = 4;
Stride [0] = 7;
Stride [1] = 4;
gslice vaGSlice ( 0, Len, Stride );
vaResult = va [ vaGSlice ];
const valarray <size_t> strideGS = vaGSlice.stride ( );
cout << "The valarray for vaGSlice is vaResult:"
<< "\n va[vaGSlice] = ( ";
for ( i = 0 ; i < 8 ; i++ )
cout << vaResult [ i ] << " ";
cout << ")." << endl;
cout << "The strides of vaResult are:"
<< "\n vaGSlice.stride ( ) = ( ";
for ( i = 0 ; i < 2 ; i++ )
cout << strideGS[ i ] << " ";
cout << ")." << endl;
}
The operand valarray va is:
( 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ).
The valarray for vaGSlice is vaResult:
va[vaGSlice] = ( 0 4 8 12 7 11 15 19 ).
The strides of vaResult are:
vaGSlice.stride ( ) = ( 7 4 ).
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по