![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
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 .
If NumDims == 1 , then it models
Random Access Iterator .
Otherwise it models
Random Access Traversal Iterator,
Readable Iterator,
Writable Iterator, and
Output 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* if a is 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 to a.shape()[0]; |
a(индекс_лист) | element& ; if a is mutable,
const element& otherwise.
|
This expression accesses a specific element of
a .index_list is 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() | iterator if a is mutable,
const_iterator otherwise.
| Это возвращает итератор, указывающий на начало a . |
a.end() | iterator if a is mutable,
const_iterator otherwise.
| Это возвращает итератор, указывающий на конец a . |
a.rbegin() | reverse_iterator if a is mutable,
const_reverse_iterator otherwise.
| Это возвращает обратный итератор, указывающий на начало a . |
a.rend() | reverse_iterator if a is mutable,
const_reverse_iterator otherwise.
| Это возвращает обратный итератор, указывающий на конец a . |
a[idx] | reference if a is mutable,
const_reference otherwise.
| Это возвращает тип ссылки, который связан с индексом idx значения a . Обратите внимание, что если i является индексной базой для этого измерения, приведенное выше выражение возвращает (idx-i) элемент (счет от нуля). Выражение эквивалентно *(a.begin()+idx-a.index_bases()[0]); . |
a[indices] | array_view<Dims>::type if
a is mutable,
const_array_view<Dims>::type otherwise.
| Это выражение генерирует вид массива, определяемый значениями 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_type a . |
Эквивалентность | 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
idx in the range of valid indices. It is equivalent to
index_range(r.start(), idx, r.stride()) |
i <=idx | индекс | This is another syntax for specifying the finish
value. This notation includes
idx in the range of valid indices. It is equivalent to
index_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 i up by idx . It is equivalent to
index_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 ::
реклама |