![]() |
![]() ![]() ![]() ![]() |
![]() |
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 ::
реклама |