![]() |
![]() ![]() ![]() ![]() |
![]() |
Expression ConceptsBoost , ,
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Общественная база | scaler_expression |
S должен быть получен из этого типа публичной базы. |
| Тип значения | <value_type> |
Тип скалярного выражения. |
<S> |
Тип, который является моделью скалярного выражения |
В дополнение к выражениям, определенным в Default Constructible, следующие выражения должны быть действительными.
| Name | Expression | Type requirements | Return type |
|---|---|---|---|
| Оценка | <operator value_type () const> |
<value_type> |
Семантика выражения определяется только там, где она отличается или не определена в Default Constructible.
| Name | Expression | Precondition | Semantics | Postcondition |
|---|---|---|---|---|
| Оценка | <operator value_type () const> |
Оценка скалярного выражения. |
Сложность времени выполнения оценки специфична для оцениваемой скалярной экспрессии.
vector_scalar_unaryvector_scalar_binaryВекторная экспрессия — это выражение, которое может быть эквивалентно вектору. Векторная экспрессия обеспечиваетиндексированный двунаправленный итераторилииндексированный итератор случайного доступа.
Конструктивный по умолчанию.
| Общественная база | vector_expression |
V должен быть получен из этого типа публичной базы. |
| Тип значения | <value_type> |
Элементный тип векторной экспрессии. |
| Тип ссылки | <reference> |
Тип возврата при доступе к элементу векторного выражения. Преобразуется в< value_type>. |
| Тип ссылки | <const_reference> |
Тип возврата при доступе к элементу постоянной векторной экспрессии. Преобразуется в< value_type>. |
| Тип размера | <size_type> |
Тип индекса векторной экспрессии. Является неподписанным интегральным типом, используемым для представления размеров и индексных значений. Может представлять собой любое неотрицательное значение< difference_type>. |
| Тип расстояния | <difference_type> |
Знаковый интегральный тип, используемый для представления расстояния между двумя векторными экспрессиями итераторов #039. |
| Тип итератора | <const_iterator> |
Тип итератора, который может использоваться для изучения элементов векторного выражения. |
| Тип итератора | <iterator> |
Тип итератора, который может быть использован для модификации элементов векторного выражения. |
| Тип обратного итератора Const | <const_reverse_iterator> |
Адаптер обратного итератора, базовый тип итератора которого является типом итератора векторного выражения. |
| Тип обратного итератора | <reverse_iterator> |
Адаптер обратного итератора, базовый тип итератора которого является типом итератора векторного выражения. |
<V> |
Тип, который является моделью векторной экспрессии |
<v, v1, v2> |
Объект типа<V> |
<i> |
<size_type> |
<t> |
<value_type> |
В дополнение к выражениям, определенным в Default Constructible, следующие выражения должны быть действительными.
| Name | Expression | Type requirements | Return type |
|---|---|---|---|
| Начало диапазона | <v.begin ()> |
<const_iterator> |
|
<v.begin ()> |
<v>Неподвижно. |
<iterator> |
|
| Конец диапазона | <v.end ()> |
<const_iterator> |
|
<v.end ()> |
<v>Неподвижно. |
<iterator> |
|
| Размер | <v.size ()> |
<size_type> |
|
| Своп | <v1.swap (v2)> |
<v1>и<v2>являются неподвижными. |
<void> |
| Начало обратного диапазона | <v.rbegin ()> |
<const_reverse_iterator> |
|
<v.rbegin ()> |
<v>Неподвижно. |
<reverse_iterator> |
|
| Конец обратного диапазона | <v.rend ()> |
<const_reverse_iterator> |
|
<v.rend ()> |
<v>Неподвижно. |
<reverse_iterator> |
|
| Доступ к элементам | <v (i)> |
<i>является конвертируемым в<size_type>. |
Преобразуется в<value_type>. |
| Assignment | <v2 = v1> |
<v2>является мутабельным и<v1>является конвертируемым в<V>. |
<V &> |
<v2.assign (v1)> |
<v2>является мутабельным и<v1>является конвертируемым в<V>. |
<V &> |
|
| Computed assignment | <v2 += v1> |
<v2>является мутабельным и<v1>является конвертируемым в<V>. |
<V &> |
<v2.plus_assign (v1)> |
<v2>является мутабельным и<v1>является конвертируемым в<V>. |
<V &> |
|
<v2 -= v1> |
<v2>является мутабельным и<v1>является конвертируемым в<V>. |
<V &> |
|
<v2.minus_assign (v1)> |
<v2>является мутабельным и<v1>является конвертируемым в<V>. |
<V &> |
|
<v *= t> |
<v>является мутабельным и<t>является конвертируемым в<value_type>. |
<V &> |
Семантика выражения определяется только там, где она отличается или не определена в Default Constructible.
| Name | Expression | Precondition | Semantics | Postcondition |
|---|---|---|---|---|
| Начало диапазона | <v.begin ()> |
Возвращает итератор, указывающий на первый элемент векторной экспрессии. | <v.begin ()>является либо сносным, либо прошедшим. И только тогда и только тогда<v.size () ==
0>. |
|
| Конец диапазона | <v.end ()> |
Возвращает итератор, указывающий на последний элемент векторной экспрессии. | <v.end ()>Это конец. |
|
| Размер | <v.size ()> |
Возвращает размер векторного выражения, то есть его количество элементов. | <v.size () >= 0> |
|
| Своп | <v1.swap (v2)> |
Это эквивалентно<swap (v1, v2)>. |
||
| Начало обратного диапазона | <v.rbegin ()> |
Это эквивалентно<reverse_iterator (v.end ())>. |
<v.rbegin ()>является либо сносным, либо прошедшим. Это будет конец, если и только если<v.size () ==
0>. |
|
| Конец обратного диапазона | <v.rend ()> |
эквивалентно<reverse_iterator (v.begin ())>. |
<v.rend ()>Прошел конец. |
|
| Доступ к элементам | <v (i)> |
<0 <= i < v.size ()> |
Возвращает<i>— элемент векторной экспрессии. |
|
| Assignment | <v2 = v1> |
<v1.size () == v2.size ()> |
Назначает каждый элемент оцениваемого векторного выражения<v1>на соответствующий элемент<v2>. |
|
<v2.assign (v1)> |
<v1.size () == v2.size ()> |
Каждый элемент<v1>присваивается соответствующему элементу<v2>. |
||
| Computed assignment | <v2 += v1> |
<v1.size () == v2.size ()> |
Добавляет каждый элемент оцениваемой векторной экспрессии<v1>к соответствующему элементу<v2>. |
|
<v2.plus_assign (v1)> |
<v1.size () == v2.size ()> |
Каждый элемент<v1>добавляется к соответствующему элементу<v2>. |
||
<v2 -= v1> |
<v1.size () == v2.size ()> |
Вычитает каждый элемент оцениваемой векторной экспрессии<v1>из соответствующего элемента<v2>. |
||
<v2.minus_assign (v1)> |
<v1.size () == v2.size ()> |
Вычитает каждый элемент<v1>из соответствующего элемента<v2>. |
||
<v *= t> |
Умножьте каждый элемент<v>на<t>. |
Сложность времени выполнения<begin ()>и<end
()>специфична для оцениваемого векторного выражения, обычно амортизированного постоянного времени.
Сложность времени выполнения<size ()>является постоянной.
Сложность времени выполнения<swap ()>специфична для оцениваемого векторного выражения, обычно постоянного времени.
Сложность времени выполнения<rbegin ()>и<rend
()>специфична для оцениваемого векторного выражения, обычно амортизированного постоянного времени.
Сложность времени выполнения доступа к элементу является специфической для оцениваемой векторной экспрессии, как правило, амортизированного постоянного времени для плотного и логарифмического для разреженного случая.
Сложность выполнения арифметических операций специфична для оцениваемых векторных выражений, обычно линейных по размеру выражений.
| действительный диапазон | Для любого векторного выражения<v>,<[v.begin (),
v.end ())>является допустимым диапазоном. |
| полнота | Алгоритм, который проходит через диапазон<[v.begin (),
v.end ())>, будет проходить через каждый элемент<v>. |
| Реверсивный диапазон | <[v.rbegin (), v.rend ())>является действительным диапазоном. |
| Эквивалентность диапазонов | Расстояние от 153 до 154 равно расстоянию от 155 до 156. |
vector_range;vector_slicematrix_rowmatrix_columnmatrix_vector_rangematrix_vector_slicevector_unaryvector_binaryvector_binary_scalar1vector_binary_scalar2matrix_vector_unary1matrix_vector_unary2matrix_vector_binary1matrix_vector_binary2Матричное выражение — это выражение, поддающееся оценке матрицей. Matrix Expression предоставляетИндексированный двунаправленный столбец/Row IteratorилиIndexed Random Access Column/Row Iterator.
Конструктивный по умолчанию.
| Общественная база | <matrix_expression<M>> |
M должен быть получен из этого типа публичной базы. |
| Тип значения | <value_type> |
Тип элемента матричного выражения. |
| Тип ссылки | <const_reference> |
Тип возврата при доступе к элементу постоянной матричной экспрессии. Преобразуется в< value_type>. |
| Тип размера | <size_type> |
Тип индекса выражения матрицы. Является неподписанным интегральным типом, используемым для представления размеров и индексных значений. Может представлять любое неотрицательное значение< difference_type>. |
| Тип расстояния | <difference_type> |
Подписанный интегральный тип, используемый для представления расстояния между двумя итераторами матрицы 's. |
| Const iterator types | <const_iterator1> |
Тип колоночного итератора, который может использоваться для изучения элементов матричного выражения. |
<const_iterator2> |
Тип итератора строк, который может быть использован для изучения элементов выражения матрицы. | |
| Const reverse iterator types | <const_reverse_iterator1> |
Адаптер обратного итератора, базовый тип итератора которого является типом итератора строки строки матрицы. |
<const_reverse_iterator2> |
Адаптер обратного итератора, базовый тип итератора которого является типом итератора строки строки матрицы. |
| Тип ссылки | <reference> |
Тип возврата при доступе к элементу матричного выражения. Преобразуется в< value_type>. |
| Iterator types | <iterator1> |
Тип колоночного итератора, который может быть использован для изменения элементов выражения матрицы. |
<iterator2> |
Тип итератора строк, который может быть использован для изменения элементов выражения матрицы. | |
| Reverse iterator types | <reverse_iterator1> |
Адаптер обратного итератора, базовый тип итератора которого является типом итератора строки строки матрицы. |
<reverse_iterator2> |
Адаптер обратного итератора, базовый тип итератора которого является типом итератора строки строки матрицы. |
<M> |
Тип, который является моделью выражения матрицы |
<m, m1, m2> |
Объект типа<M> |
<i, j> |
Объекты типа, конвертируемые в<size_type> |
<t> |
<value_type> |
В дополнение к выражениям, определенным в Default Constructible, следующие выражения должны быть действительными.
| Name | Expression | Type requirements | Return type |
|---|---|---|---|
| Размер | <m.size1 ()> |
<size_type> |
|
<m.size2 ()> |
<size_type> |
| Name | Expression | Type requirements | Return type |
|---|---|---|---|
| Начало диапазона | <m.begin1 ()> |
<const_iterator1> |
|
<m.begin2 ()> |
<const_iterator2> |
||
<m.begin1 ()> |
<m>Неподвижно. |
<iterator1> |
|
<m.begin2 ()> |
<m>Неподвижно. |
<iterator2> |
|
| Конец диапазона | <m.end1 ()> |
<const_iterator1> |
|
<m.end2 ()> |
<const_iterator2> |
||
<m.end1 ()> |
<m>Неподвижно. |
<iterator1> |
|
<m.end2 ()> |
<m>Неподвижно. |
<iterator2> |
|
| Своп | <m1.swap (m2)> |
<m1>и<m2>являются изменчивыми. |
<void> |
| Начало обратного диапазона | <m.rbegin1 ()> |
<const_reverse_iterator1> |
|
<m.rbegin2 ()> |
<const_reverse_iterator2> |
||
<m.rbegin1 ()> |
<m>Неподвижно. |
<reverse_iterator1> |
|
<m.rbegin2 ()> |
<m>Неподвижно. |
<reverse_iterator2> |
|
| Конец обратного диапазона | <m.rend1 ()> |
<const_reverse_iterator1> |
|
<m.rend2 ()> |
<const_reverse_iterator2> |
||
<m.rend1 ()> |
<m>Неподвижно. |
<reverse_iterator1> |
|
<m.rend2 ()> |
<m>Неподвижно. |
<reverse_iterator2> |
|
| Доступ к элементам | <m (i, j)> |
<i>и<j>могут быть преобразованы в<size_type>. |
Преобразуется в<value_type>. |
| Assignment | <m2 = m1> |
<m2>является мутабельным и<m1>является конвертируемым в<M>. |
<M &> |
<m2.assign (m1)> |
<m2>является мутабельным и<m1>является конвертируемым в<M>. |
<M &> |
|
| Computed assignment | <m2 += m1> |
<m2>является мутабельным и<m1>является конвертируемым в<M>. |
<M &> |
<m2.plus_assign (m1)> |
<m2>является мутабельным и<m1>является конвертируемым в<M>. |
<M &> |
|
<m2 -= m1> |
<m2>является мутабельным и<m1>является конвертируемым в<M>. |
<M &> |
|
<m2.minus_assign (m1)> |
<m2>является мутабельным и<m1>является конвертируемым в<M>. |
<M &> |
|
<m *= t> |
<m>является мутабельным и<t>является конвертируемым в<value_type>. |
<M &> |
Семантика выражения определяется только там, где она отличается или не определена в Default Constructible.
| Name | Expression | Precondition | Semantics | Postcondition |
|---|---|---|---|---|
| Начало диапазона | <m.begin1 ()> |
Возвращает итератор, указывающий на первый элемент в первом столбце матричного выражения. | <m.begin1 ()>является либо сносным, либо прошедшим. Это конец, если и только если<m.size1 () ==
0>. |
|
<m.begin2 ()> |
Возвращает итератор, указывающий на первый элемент в первом ряду матричного выражения. | <m.begin2 ()>является либо сносным, либо прошедшим. Это будет конец, если и только если<m.size2 () ==
0>. |
||
| Конец диапазона | <m.end1 ()> |
Возвращает итератор, указывающий на последний элемент в выражении матрицы. | <m.end1 ()>Это конец. |
|
<m.end2 ()> |
Возвращает итератор, указывающий на последний элемент в выражении матрицы. | <m.end2 ()>Это конец. |
||
| Размер | <m.size1 ()> |
Возвращает число строк выражения матрицы. | <m.size1 () >= 0> |
|
<m.size2 ()> |
Возвращает число столбцов выражения матрицы. | <m.size2 () >= 0> |
||
| Своп | <m1.swap (m2)> |
Это эквивалентно<swap (m1, m2)>. |
||
| Начало обратного диапазона | <m.rbegin1 ()> |
Это эквивалентно<reverse_iterator1 (m.end1 ())>. |
<m.rbegin1 ()>является либо сносным, либо прошедшим. И это только в том случае, если<m.size1 () ==
0>. |
|
<m.rbegin2 ()> |
Это эквивалентно<reverse_iterator2 (m.end2 ())>. |
<m.rbegin2 ()>является либо сносным, либо прошедшим концом. Это конец, если и только если<m.size2 () ==
0>. |
||
| Конец обратного диапазона | <m.rend1 ()> |
эквивалентно<reverse_iterator1 (m.begin1
())>. |
<m.rend1 ()>Это конец. |
|
<m.rend2 ()> |
эквивалентно<reverse_iterator2 (m.begin2
())>. |
<m.rend2 ()>Это конец. |
||
| Доступ к элементам | <m (i, j)> |
<0 <= i < m.size1 ()>и<0 <= j <
m.size2 ()> |
Возвращает<j>— элемент<i>— строку матричного выражения. |
|
| Assignment | <m2 = m1> |
<m1.size1 () == m2.size1 ()>и<> |
Назначает каждый элемент оцениваемого матричного выражения<m1>на соответствующий элемент<m2>. |
|
<m2.assign (m1)> |
<m1.size1 () == m2.size1 ()>и<> |
Каждый элемент<m1>присваивается соответствующему элементу<m2>. |
||
| Computed assignment | <m2 += m1> |
<m1.size1 () == m2.size1 ()>и<> |
Добавляет каждый элемент оцениваемого матричного выражения<m1>к соответствующему элементу<m2>. |
|
<m2.plus_assign (m1)> |
<m1.size1 () == m2.size1 ()>и<> |
Каждый элемент<m1>добавляется к соответствующему элементу<m2>. |
||
<m2 -= m1> |
<m1.size1 () == m2.size1 ()>и<> |
Вычитает каждый элемент оцениваемого матричного выражения<m1>из соответствующего элемента<m2>. |
||
<m2.minus_assign (m1)> |
<m1.size1 () == m2.size1 ()>и<> |
Вычитает каждый элемент<m1>из соответствующего элемента<m2>. |
||
<m *= t> |
Умножьте каждый элемент<m>на<t>. |
Сложность времени выполнения<begin1 ()>,<begin2
()>,<end1 ()>и<end2 ()>специфична для оцениваемого выражения матрицы.
Сложность времени выполнения<size1 ()>и<size2
()>является постоянной.
Сложность времени выполнения<swap ()>специфична для оцениваемого выражения матрицы, обычно постоянного времени.
Сложность времени выполнения<rbegin1 ()>,<rbegin2 ()>,<rend1 ()>и<rend2
()>является специфичной для оцениваемого выражения матрицы.
Сложность времени выполнения доступа к элементу является специфической для оцениваемого выражения матрицы, обычно амортизированного постоянного времени для плотного и логарифмического для разреженного случая.
Сложность выполнения арифметических операций является специфической для оцениваемых матричных выражений, обычно квадратичной по размеру прокси.
| действительный диапазон | Для любого матричного выражения<m>,<[m.begin1 (),
m.end1 ())>и<[m.begin2 (), m.end2 ())>допустимы диапазоны. |
| полнота | Алгоритм, который проходит через диапазон<[m.begin1
(), m.end1 ())>, пройдет через каждый ряд<m>, алгоритм, который проходит через диапазон<[m.begin2 (),
m.end2 ())>, пройдет через каждый столбец<m>. |
| Реверсивный диапазон | <[m.rbegin1 (), m.rend1 ())>и<[m.rbegin2
(), m.rend2 ())>являются допустимыми диапазонами. |
| Эквивалентность диапазонов | Расстояние от<m.begin1 ()>до<m.end1
()>такое же, как расстояние от<m.rbegin1
()>до<m.rend1 ()>, а расстояние от<m.begin2 ()>до<m.end2 ()>такое же, как расстояние от<m.rbegin2 ()>до<m.rend2
()>. |
matrix_rangematrix_slice;triangular_adaptorsymmetric_adaptorbanded_adaptorvector_matrix_binarymatrix_unary1matrix_unary2matrix_binarymatrix_binary_scalar1matrix_binary_scalar2matrix_matrix_binaryАвторское право (©) 2000-2002 Йорг Уолтер, Матиас Кох
На использование, модификацию и распространение распространяется лицензия Boost Software License, Version 1.0. (См. сопроводительный файл LICENSE_1_0.txt или копию по адресу) http://www.boost.org/LICENSE_1_0.txt.
Статья Expression Concepts раздела может быть полезна для разработчиков на c++ и boost.
:: Главная :: ::
реклама |