![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
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_unary
vector_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_slice
matrix_row
matrix_column
matrix_vector_range
matrix_vector_slice
vector_unary
vector_binary
vector_binary_scalar1
vector_binary_scalar2
matrix_vector_unary1
matrix_vector_unary2
matrix_vector_binary1
matrix_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_range
matrix_slice;
triangular_adaptor
symmetric_adaptor
banded_adaptor
vector_matrix_binary
matrix_unary1
matrix_unary2
matrix_binary
matrix_binary_scalar1
matrix_binary_scalar2
matrix_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.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: ::
реклама |