|  | 
|      | 
|  | 
| MultiArray ConceptBoost , The Boost C++ Libraries BoostBook Documentation Subset , Chapter 25. Boost.MultiArray Reference Manual
  
   | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| A | Тип, который является моделью MultiArray | 
| a,b | Objects of type A | 
| NumDims | Параметр числового измерения, связанный с A. | 
| Димы | Некоторые параметры числового измерения, такие как 0 | 
| индексы | Объект, созданный некоторыми цепными звонками к index_gen::operator [] (index_range). | 
| индекс_лист | An object whose type models Collection | 
| idx | Подписанное интегральное значение. | 
| tmp | An object of type boost::array<index,NumDims> | 
Table 25.2. Associated Types
| Type | Description | 
|---|---|
| значение_тип | Это тип значения контейнера. Если NumDims == 1, то этоelement. В противном случае, это тип значения немедленно вложенных контейнеров. | 
| reference | Это исходный тип содержащегося значения. Если NumDims == 1, то этоelement&. В противном случае, это тот же тип, что и шаблон субаррей . | 
| const_reference | Это эталонный тип содержащегося значения. Если NumDims == 1, то этоconst element&. В противном случае, это тот же тип, что и шаблон const_subarray< NumDims-1>::type. | 
| size_type | Это неподписанный интегральный тип. Он в первую очередь используется для определения формы массива. | 
| difference_type | Это подписанный интегральный тип, используемый для представления расстояния между двумя итераторами. Это тот же тип, что и std::iterator_traits. | 
| итератор | This is an iterator over the values of A.
IfNumDims == 1, then it modelsRandom Access Iterator. 
Otherwise it models 
Random Access Traversal Iterator,
Readable Iterator,
Writable Iterator, andOutput Iterator. | 
| const_iterator | Это расходный итератор над значениями A. | 
| reverse_iterator | Это обратный итератор, используемый для итерации назад по значениям A. | 
| const_reverse_iterator | Это обратный итератор. A. | 
| элемент | This is the type of objects stored at the base of the
hierarchy of MultiArrays. It is the same as template subarray<1>::value_type | 
| индекс | Это подписанный интегральный тип, используемый для индексации на A. Он также используется для представления успехов и индексных баз. | 
| index_gen | Этот тип используется для создания тюпа index_range, переданногоoperator []для создания объектаarray_view. | 
| index_range | Этот тип определяет ряд индексов по некоторым измерениям MultiArray. Этот диапазон будет виден через объект array_view. | 
|  Шаблон субаррей < Dims>::type | Это субаррейный тип с размерами Dims. Это эталонный тип (NumDims - Dims)размерностиA, а также модели MultiArray. | 
|  шаблон const_subarray | Это тип подарка. | 
|  Шаблон массив_view< Dims>::type | Это вид с размерами Dims. Он возвращается путем вызоваоператор [] (. Это модели MultiArray. | 
| template
const_array_view<Dims>::type | Это тип точки зрения с размерами Dims. | 
Table 25.3. Valid Expressions
| Expression | Return type | Semantics | 
|---|---|---|
| A::размерность | size_type | Эта константа компиляции-времени представляет число измерений массива (примечание, что A::размерность == NumDims). | 
| a.shape() | const size_type* | Это возвращает список элементов NumDims, указывающих степень каждого измерения массива. | 
| a.strides() | const index* | Это возвращает список элементов NumDims, указывающих полосу, связанную с каждым измерением массива. При доступе к значениям, шаги используются для расчета местоположения элемента в памяти. | 
| a.index_bases() | const index* | Это возвращает список элементов NumDims, указывающих цифровой индекс первого элемента для каждого измерения массива. | 
| a.origin() | element*ifais mutable,const element*otherwise. | Это возвращает адрес элемента, доступного выражением a[0][0].. [0].. Если индексные основы являются положительными, этот элемент не будет существовать, но адрес все еще может быть использован для обнаружения действующего элемента с учетом его индексов. | 
| a.num_dimensions() | size_type | Это возвращает число измерений массива (примечание, что a.num_dimensions() == NumDims). | 
| a.num_elements() | size_type | This returns the number of elements contained
in the array. It is equivalent to the following code: 
std::accumulate(a.shape(),a.shape+a.num_dimensions(),
    size_type(1),std::multiplies<size_type>());
 | 
| a.size() | size_type | This returns the number of values contained in a. It is equivalent toa.shape()[0]; | 
| a(индекс_лист) | element&;  ifais mutable,const element&otherwise. | This expression accesses a specific element of a.index_listis the unique set
of indices that address the element returned.  It is 
equivalent to the following code (disregarding intermediate temporaries):
    // multiply indices by strides
    std::transform(index_list.begin(), index_list.end(),
      a.strides(), tmp.begin(), std::multiplies<index>()),
    // add the sum of the products to the origin
    *std::accumulate(tmp.begin(), tmp.end(), a.origin());
 | 
| a.begin() | iteratorifais mutable,const_iteratorotherwise. | Это возвращает итератор, указывающий на начало a. | 
| a.end() | iteratorifais mutable,const_iteratorotherwise. | Это возвращает итератор, указывающий на конец a. | 
| a.rbegin() | reverse_iteratorifais mutable,const_reverse_iteratorotherwise. | Это возвращает обратный итератор, указывающий на начало a. | 
| a.rend() | reverse_iteratorifais mutable,const_reverse_iteratorotherwise. | Это возвращает обратный итератор, указывающий на конец a. | 
| a[idx] | referenceifais mutable,const_referenceotherwise. | Это возвращает тип ссылки, который связан с индексом idxзначенияa. Обратите внимание, что еслиiявляется индексной базой для этого измерения, приведенное выше выражение возвращает(idx-i)элемент (счет от нуля). Выражение эквивалентно*(a.begin()+idx-a.index_bases()[0]);. | 
| a[indices] | array_view<Dims>::typeifais mutable,const_array_view<Dims>::typeotherwise. | Это выражение генерирует вид массива, определяемый значениями index_rangeиindex, используемыми для построенияindices. | 
| a == b | bool | Это выполняет лексикографическое сравнение значений aиb. Тип элемента должен модели EqualityComparable, чтобы это выражение было действительным. | 
| a < b | bool | Это выполняет лексикографическое сравнение значений aиb. Тип элемента должен модели LessThanComparable, чтобы это выражение было действительным. | 
| a <=b | bool | Это выполняет лексикографическое сравнение значений aиb. Тип элемента должен модели EqualityComparable и LessThanComparable, чтобы это выражение было действительным. | 
| a > b | bool | Это выполняет лексикографическое сравнение значений aиb. Тип элемента должен модели EqualityComparable и LessThanComparable, чтобы это выражение было действительным. | 
| a >=b | bool | Это выполняет лексикографическое сравнение значений aиb. Тип элемента должен модели LessThanComparable, чтобы это выражение было действительным. | 
begin() and end() execute in amortized
constant time.
size() executes in at most linear time in the 
MultiArray's size. 
Table 25.4. Invariants
| Диапазон проверки | [a.begin(),a.end())is a valid range. | 
| Размер диапазона | a.size() == std::distance(a.begin(),a.end());. | 
| Полнота | Итерация через диапазон [a.begin(),a.end())будет проходить через каждые value_typea. | 
| Эквивалентность | a[a1][a2]...[aN]гдеN==NumDimsдает тот же результат, что иa(index_list), гдеindex_listявляется Collection, содержащим значенияa1...aN. | 
Следующие типы MultiArray определяют интерфейс для создания просмотров существующих MultiArray. Их интерфейсы и роли в концепции описаны ниже.
index_range объекты представляют полуоткрытые интервалы. Они агрегированы (с использованием объекта index_gen) и передаются мультиаррейскому оператору[1] для создания массивного обзора. При создании просмотра каждый index_range обозначает ряд действительных индексов по одному измерению MultiArray. Элементы, которые доступны через набор указанных диапазонов, будут включены в сконструированный вид. В некоторых случаях создается index_range без указания стартовых или конечных значений. В этих случаях объект интерпретируется, чтобы начаться в начале мультиаррейского измерения и закончиться в конце.
index_range objects can be constructed and modified 
several ways in order to allow convenient and clear expression of a
range of indices.  To specify ranges, index_range
supports a set of constructors, mutating member functions, and a novel 
specification involving inequality operators.  Using inequality
operators,  a half open range [5,10) can be specified as follows:
5 <= index_range() < 10;
или
4 < index_range() <= 9;
и так далее. Ниже описывается интерфейс index_range.
Table 25.6. Associated Types
| Type | Description | 
|---|---|
| индекс | Это подписанный интегральный тип. Он используется для указания значений старта, финиша и полосы. | 
| size_type | Это неподписанный интегральный тип. Он используется, чтобы сообщить размер диапазона, который представляет index_range. | 
Table 25.7. Valid Expressions
| Expression | Return type | Semantics | 
|---|---|---|
| index_range(idx1,idx2,idx3) | index_range | Это создает индекс_range, представляющий интервал[idx1,idx2]с полосойidx3. | 
| index_range(idx1,idx2) | index_range | Это создает индекс_range, представляющий интервал[idx1,idx2]с узелом. Это эквивалентноindex_range(idx1,idx2,1). | 
| index_range() | index_range | Эта конструкция index_rangeс неопределенными стартовыми и финишными значениями. | 
| i.start(idx1) | индекс& | Это устанавливает начальный индекс iнаidx. | 
| i.finish(idx) | индекс& | Это устанавливает индекс финиша iнаidx. | 
| i.stride(idx) | индекс& | Это устанавливает длину iнаidx. | 
| i.start() | индекс | Это возвращает начальный индекс i. | 
| i.finish() | индекс | Это возвращает индекс финиша i. | 
| i.stride() | индекс | Это возвращает длину полосы i. | 
| i.get_start(idx) | индекс | Если iуказывает стартовое значение, это эквивалентноi.start(). В противном случае он возвращаетidx. | 
| i.get_finish(idx) | индекс | Если iуказывает итоговое значение, это эквивалентноi.finish(). В противном случае он возвращаетidx. | 
| i.size(idx) | size_type | Если iуказывает как итоговые, так и стартовые значения, это эквивалентно(i.finish()-i.start())/i.stride(). В противном случае он возвращаетidx. | 
| i < idx | индекс | This is another syntax for specifying the finish
value. This notation does not include idxin the range of valid indices. It is equivalent toindex_range(r.start(), idx, r.stride()) | 
| i <=idx | индекс | This is another syntax for specifying the finish
value. This notation includes idxin the range of valid indices. It is equivalent toindex_range(r.start(), idx + 1, r.stride()) | 
| idx < i | индекс | Это еще один синтаксис для указания стартового значения. Эта нотация не включает idxв диапазон действительных индексов. Это эквивалентноindex_range(idx + 1, i.finish(), i.stride()). | 
| idx <=i | индекс | Это еще один синтаксис для указания стартового значения. Эта нотация включает в себя idx1в диапазоне действительных индексов. Это эквивалентноindex_range(idx, i.finish(), i.stride()). | 
| i + idx | индекс | Это выражение меняет начальные и конечные значения iвверх наidx. Это эквивалентноindex_range(r.start()+idx1, r.finish()+idx, r.stride()) | 
| i - idx | индекс | This expression shifts the start and finish values
of iup byidx. It is equivalent toindex_range(r.start()-idx1, r.finish()-idx, r.stride()) | 
index_gen агрегаты index_range объектов для указания параметров обзора. Chained calls to operator [] store range and dimension information used to Instantiate a new view into a MultiArray.
Table 25.8. Notation
| Димы, Ранги | Неподписанные интегральные значения. | 
| x | Объект типа template gen_type. | 
| i | Объект типа index_range. | 
| idx | Объекты типа индекс. | 
Table 25.9. Associated Types
| Type | Description | 
|---|---|
| индекс | Это подписанный интегральный тип. Он используется для указания дегенератных размеров. | 
| size_type | Это неподписанный интегральный тип. Он используется, чтобы сообщить размер диапазона, который представляет index_range. | 
| template gen_type::<Dims,Ranges>::type | Этот тип генераторов имен результат Dimsцепные звонки наindex_gen::operator []. Обратите внимание, чтоindex_genиgen_type<0,0>::typeимеют один и тот же тип. | 
Table 25.10. Valid Expressions
| Expression | Return type | Semantics | 
|---|---|---|
| index_gen() | gen_type<0,0>::type | Это создает объект index_gen. Затем этот объект может быть использован для создания tuples значенийindex_range. | 
| x[i] | gen_type<Dims+1,Ranges+1>::type | Возвращает новый объект, содержащий все предыдущие индекс_rangeобъекты в дополнение кi.Цепные вызовыоператору []являются средством, с помощью которого объектыindex_rangeагрегированы. | 
| x[idx] | gen_type<Dims,Ranges+1>::type | Description Обратите внимание, что это НЕ эквивалентно x[index_range(idx,idx)]., который вернет объект типаgen_type< Dims+1,Ranges+1>::type. | 
Статья MultiArray Concept раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 25. Boost.MultiArray Reference Manual может быть полезна для разработчиков на c++ и boost.
:: Главная :: Chapter 25. Boost.MultiArray Reference Manual ::
| реклама |