Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Expression Concepts

Boost , ,

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Expression Concepts

Scalar Expression

Description

Скалярное выражение — это выражение, конвертируемое в скалярный тип.

Refinement of

Конструктивный по умолчанию.

Associated types

Общественная база scaler_expression S должен быть получен из этого типа публичной базы.
Тип значения <value_type> Тип скалярного выражения.

Notation

<S> Тип, который является моделью скалярного выражения

Definitions

Valid expressions

В дополнение к выражениям, определенным в Default Constructible, следующие выражения должны быть действительными.

Name Expression Type requirements Return type
Оценка <operator value_type () const>   <value_type>

Expression semantics

Семантика выражения определяется только там, где она отличается или не определена в Default Constructible.

Name Expression Precondition Semantics Postcondition
Оценка <operator value_type () const>     Оценка скалярного выражения.  

Complexity guarantees

Сложность времени выполнения оценки специфична для оцениваемой скалярной экспрессии.

Invariants

Models

  • vector_scalar_unary
  • vector_scalar_binary

Vector Expression

Description

Векторная экспрессия — это выражение, которое может быть эквивалентно вектору. Векторная экспрессия обеспечиваетиндексированный двунаправленный итераторилииндексированный итератор случайного доступа.

Refinement of

Конструктивный по умолчанию.

Associated types

Общественная база 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> Адаптер обратного итератора, базовый тип итератора которого является типом итератора векторного выражения.

Notation

<V> Тип, который является моделью векторной экспрессии
<v, v1, v2> Объект типа<V>
<i> <size_type>
<t> <value_type>

Definitions

Valid expressions

В дополнение к выражениям, определенным в 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 &>

Expression semantics

Семантика выражения определяется только там, где она отличается или не определена в 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>.  

Complexity guarantees

Сложность времени выполнения<begin ()>и<end ()>специфична для оцениваемого векторного выражения, обычно амортизированного постоянного времени.

Сложность времени выполнения<size ()>является постоянной.

Сложность времени выполнения<swap ()>специфична для оцениваемого векторного выражения, обычно постоянного времени.

Сложность времени выполнения<rbegin ()>и<rend ()>специфична для оцениваемого векторного выражения, обычно амортизированного постоянного времени.

Сложность времени выполнения доступа к элементу является специфической для оцениваемой векторной экспрессии, как правило, амортизированного постоянного времени для плотного и логарифмического для разреженного случая.

Сложность выполнения арифметических операций специфична для оцениваемых векторных выражений, обычно линейных по размеру выражений.

Invariants

действительный диапазон Для любого векторного выражения<v>,<[v.begin (), v.end ())>является допустимым диапазоном.
полнота Алгоритм, который проходит через диапазон<[v.begin (), v.end ())>, будет проходить через каждый элемент<v>.
Реверсивный диапазон <[v.rbegin (), v.rend ())>является действительным диапазоном.
Эквивалентность диапазонов Расстояние от 153 до 154 равно расстоянию от 155 до 156.

Models

  • 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

Description

Матричное выражение — это выражение, поддающееся оценке матрицей. Matrix Expression предоставляетИндексированный двунаправленный столбец/Row IteratorилиIndexed Random Access Column/Row Iterator.

Refinement of

Конструктивный по умолчанию.

Associated types

immutable types
Общественная база <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> Адаптер обратного итератора, базовый тип итератора которого является типом итератора строки строки матрицы.
mutable types
Тип ссылки <reference> Тип возврата при доступе к элементу матричного выражения.
Преобразуется в<value_type>.
Iterator types <iterator1> Тип колоночного итератора, который может быть использован для изменения элементов выражения матрицы.
<iterator2> Тип итератора строк, который может быть использован для изменения элементов выражения матрицы.
Reverse iterator types <reverse_iterator1> Адаптер обратного итератора, базовый тип итератора которого является типом итератора строки строки матрицы.
<reverse_iterator2> Адаптер обратного итератора, базовый тип итератора которого является типом итератора строки строки матрицы.

Notation

<M> Тип, который является моделью выражения матрицы
<m, m1, m2> Объект типа<M>
<i, j> Объекты типа, конвертируемые в<size_type>
<t> <value_type>

Definitions

Valid expressions

В дополнение к выражениям, определенным в Default Constructible, следующие выражения должны быть действительными.

immutable expressions
Name Expression Type requirements Return type
Размер <m.size1 ()>   <size_type>
<m.size2 ()>   <size_type>
possibly mutable expressions
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 &>

Expression semantics

Семантика выражения определяется только там, где она отличается или не определена в 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.size2 () == m2.size2 ()
>
Назначает каждый элемент оцениваемого матричного выражения<m1>на соответствующий элемент<m2>.  
<m2.assign (m1)> <m1.size1 () == m2.size1 ()>и<
m1.size2 () == m2.size2 ()
>
Каждый элемент<m1>присваивается соответствующему элементу<m2>.  
Computed assignment <m2 += m1> <m1.size1 () == m2.size1 ()>и<
m1.size2 () == m2.size2 ()
>
Добавляет каждый элемент оцениваемого матричного выражения<m1>к соответствующему элементу<m2>.  
<m2.plus_assign (m1)> <m1.size1 () == m2.size1 ()>и<
m1.size2 () == m2.size2 ()
>
Каждый элемент<m1>добавляется к соответствующему элементу<m2>.  
<m2 -= m1> <m1.size1 () == m2.size1 ()>и<
m1.size2 () == m2.size2 ()
>
Вычитает каждый элемент оцениваемого матричного выражения<m1>из соответствующего элемента<m2>.  
<m2.minus_assign (m1)> <m1.size1 () == m2.size1 ()>и<
m1.size2 () == m2.size2 ()
>
Вычитает каждый элемент<m1>из соответствующего элемента<m2>.  
<m *= t>   Умножьте каждый элемент<m>на<t>.  

Complexity guarantees

Сложность времени выполнения<begin1 ()>,<begin2 ()>,<end1 ()>и<end2 ()>специфична для оцениваемого выражения матрицы.

Сложность времени выполнения<size1 ()>и<size2 ()>является постоянной.

Сложность времени выполнения<swap ()>специфична для оцениваемого выражения матрицы, обычно постоянного времени.

Сложность времени выполнения<rbegin1 ()>,<rbegin2 ()>,<rend1 ()>и<rend2 ()>является специфичной для оцениваемого выражения матрицы.

Сложность времени выполнения доступа к элементу является специфической для оцениваемого выражения матрицы, обычно амортизированного постоянного времени для плотного и логарифмического для разреженного случая.

Сложность выполнения арифметических операций является специфической для оцениваемых матричных выражений, обычно квадратичной по размеру прокси.

Invariants

действительный диапазон Для любого матричного выражения<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 ()>.

Models

  • 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.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 21:01:56/0.012262105941772/1