Класс indirect_arrayindirect_array Class

Внутренний, вспомогательный шаблон класса, который поддерживает объекты, являющиеся подмножествами объектов valarray, предоставляя операции между массивами подмножества, определенными путем указания подмножества индексов родительского valarray.An internal, auxiliary class template that supports objects that are subsets of valarrays by providing operations between subset arrays defined by specifying a subset of indices of a parent valarray.

СинтаксисSyntax

RemarksRemarks

Класс описывает объект, хранящий ссылку на объект va класса valarray <Type> , а также объект xa класса valarray<size_t> , который описывает последовательность элементов для выбора из valarray<Type> объекта.The class describes an object that stores a reference to an object va of class valarray<Type>, along with an object xa of class valarray<size_t>, which describes the sequence of elements to select from the valarray<Type> object.

indirect_array<Type>Объект создается только путем написания выражения формы va[xa] .You construct an indirect_array<Type> object only by writing an expression of the form va[xa]. Функции-члены класса indirect_array ведут себя как соответствующие сигнатуры функций, определенные для valarray<Type> , за исключением того, что затрагивается только последовательность выбранных элементов.The member functions of class indirect_array then behave like the corresponding function signatures defined for valarray<Type>, except that only the sequence of selected elements is affected.

Последовательность состоит из XA. Размер элементов, элемент Where I преобразуется в индекс XA[ I ] в va .The sequence consists of xa.size elements, where element I becomes the index xa[ I] within va.

ПримерExample:

// indirect_array.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>

int main( )
{
   using namespace std;
   int i;

   valarray<int> va ( 10 );
   for ( i = 0 ; i < 10 ; i += 2 )
      va [ i ] =  i;
   for ( i = 1 ; i < 10 ; i += 2 )
      va [ i ] =  -1;

   cout << "The initial operand valarray is:  ( ";
      for ( i = 0 ; i < 10 ; i++ )
         cout << va [ i ] << " ";
   cout << ")." << endl;

   // Select 2nd, 4th & 6th elements
   // and assign a value of 10 to them
   valarray<size_t> indx ( 3 );
   indx [0] = 2;
   indx [1] = 4;
   indx [2] = 6;
   va[indx] = 10;

   cout << "The modified operand valarray is:  ( ";
      for (i = 0 ; i < 10 ; i++ )
         cout << va [ i ] << " ";
   cout << ")." << endl;
}

Выходные данныеOutput

The initial operand valarray is:  (0 -1 2 -1 4 -1 6 -1 8 -1).
The modified operand valarray is:  (0 -1 10 -1 10 -1 10 -1 8 -1).

ТребованияRequirements

Заголовок:<valarray>Header: <valarray>

Пространство имен: stdNamespace: std

См. также разделSee also

Безопасность потоков в стандартной библиотеке C++Thread Safety in the C++ Standard Library