⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 concepts.qbk

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 QBK
字号:
[section:concepts Iterator Concepts][section:concepts_access Access][h2 Readable Iterator Concept]A class or built-in type `X` models the *Readable Iterator* conceptfor value type `T` if, in addition to `X` being Assignable andCopy Constructible, the following expressions are valid and respectthe stated semantics. `U` is the type of any specified member oftype `T`.[table Readable Iterator Requirements (in addition to Assignable and Copy Constructible)  [    [Expression]    [Return Type]    [Note/Precondition]  ]  [    [`iterator_traits<X>::value_type`]    [`T`]    [Any non-reference, non cv-qualified type]  ]  [    [`*a`]    [ Convertible to `T`]    [pre: `a` is dereferenceable. If `a == b` then `*a` is equivalent to `*b`.]  ]  [    [`a->m`]    [`U&`]    [pre: `(*a).m` is well-defined. Equivalent to `(*a).m`.]  ]]                                                             [h2 Writable Iterator Concept  ]                                                              A class or built-in type `X`   models the *Writable Iterator* conceptif, in addition to `X` being   Copy Constructible, the followingexpressions are valid and respect the stated semantics.  WritableIterators have an associated *set of value types*.[table Writable Iterator Requirements (in addition to Copy Constructible)   [    [Expression]    [Return Type]    [Precondition]  ]  [    [`*a = o`  ]    []    [pre: The type of `o` is in the set of value types of `X`]  ]][h2 Swappable Iterator Concept]A class or built-in type `X` models the *Swappable Iterator* conceptif, in addition to `X` being Copy Constructible, the followingexpressions are valid and respect the stated semantics.[table Swappable Iterator Requirements (in addition to Copy Constructible)   [    [Expression]    [Return Type]    [Postcondition]  ]  [    [`iter_swap(a, b)`]    [`void`]    [the pointed to values are exchanged]  ]][blurb *Note:* An iterator that is a model of the *Readable* and *Writable Iterator* concepts  is also a model of *Swappable Iterator*.  *--end note*][h2 Lvalue Iterator Concept]The *Lvalue Iterator* concept adds the requirement that the returntype of `operator*` type be a reference to the value type of theiterator.[table Lvalue Iterator Requirements  [    [Expression]    [Return Type]    [Note/Assertion]  ]  [    [`*a`      ]    [`T&`       ]    [      `T` is *cv* `iterator_traits<X>::value_type` where *cv* is an optional cv-qualification.      pre: `a` is dereferenceable. If `a == b` then `*a` is equivalent to `*b`.    ]  ]][endsect][section:concepts_traversal Traversal][h2 Incrementable Iterator Concept]A class or built-in type `X` models the *Incrementable Iterator*concept if, in addition to `X` being Assignable and CopyConstructible, the following expressions are valid and respect thestated semantics.[table Incrementable Iterator Requirements (in addition to Assignable, Copy Constructible)  [    [Expression ]    [Return Type]    [Assertion/Semantics ]  ]  [    [`++r`      ]    [`X&`       ]    [`&r == &++r`]  ]  [    [`r++`      ]    [`X`        ]    [``       {         X tmp = r;         ++r;             return tmp;       }    ``]  ]  [    [`iterator_traversal<X>::type`]    [Convertible to `incrementable_traversal_tag`]    []  ]][h2 Single Pass Iterator Concept]A class or built-in type `X` models the *Single Pass Iterator*concept if the following expressions are valid and respect the statedsemantics.[table Single Pass Iterator Requirements (in addition to Incrementable Iterator and Equality Comparable)  [    [Expression]    [Return Type]    [Assertion/Semantics / Pre-/Post-condition]  ]  [    [`++r`]    [`X&`]    [pre:\n`r` is dereferenceable;\npost:\n`r` is dereferenceable or\n`r` is past-the-end]  ]  [    [`a == b`]    [convertible to `bool`]    [`==` is an equivalence relation over its domain]  ]  [    [`a != b`]    [convertible to `bool`]    [`!(a == b)`]  ]  [    [`iterator_traversal<X>::type`]    [Convertible to`single_pass_traversal_tag`]    []  ]][h2 Forward Traversal Concept]A class or built-in type `X` models the *Forward Traversal*concept if, in addition to `X` meeting the requirements of DefaultConstructible and Single Pass Iterator, the following expressions arevalid and respect the stated semantics.[table Forward Traversal Iterator Requirements (in addition to Default Constructible and Single Pass Iterator)  [    [Expression]    [Return Type]    [Assertion/Note]  ]  [    [`X u;`]    [`X&`]    [note: `u` may have a singular value.]  ]  [    [`++r`]    [`X&`]    [`r == s` and `r` is dereferenceable implies `++r == ++s.`]  ]  [    [`iterator_traits<X>::difference_type`]    [A signed integral type representing the distance between iterators]    []  ]  [    [`iterator_traversal<X>::type`]    [Convertible to `forward_traversal_tag`]    []  ]][h2 Bidirectional Traversal Concept]A class or built-in type `X` models the *Bidirectional Traversal*concept if, in addition to `X` meeting the requirements of ForwardTraversal Iterator, the following expressions are valid and respectthe stated semantics.[table Bidirectional Traversal Iterator Requirements (in addition to Forward Traversal Iterator)  [    [Expression]    [Return Type]    [Assertion/Semantics/Pre-/Post-condition]  ]   [    [`--r`]    [`X&`]    [pre: there exists `s` such that `r == ++s`.\n post: `s` is dereferenceable. `--(++r) == r`. `--r == --s` implies `r == s`. `&r == &--r`.]  ]  [    [`r--`]    [convertible to `const X&`]    [``        {          X tmp = r;          --r;          return tmp;        }    ``]  ]  [    [`iterator_traversal<X>::type`]    [Convertible to `bidirectional_traversal_tag`]    []  ]][h2 Random Access Traversal Concept]A class or built-in type `X` models the *Random Access Traversal*concept if the following expressions are valid and respect the statedsemantics.  In the table below, `Distance` is`iterator_traits<X>::difference_type` and `n` represents aconstant object of type `Distance`.[table Random Access Traversal Iterator Requirements (in addition to Bidirectional Traversal)   [     [Expression]    [Return Type]    [Operational Semantics]    [Assertion/Precondition]  ]  [    [`r += n`]    [ `X&`]    [``        {           Distance m = n;          if (m >= 0)            while (m--)               ++r;          else            while (m++)              --r;          return r;        }    ``]    [ ]  ]  [     [`a + n`, `n + a`]    [`X`]    [``        {           X tmp = a;          return tmp+= n;        }    ``]    []  ]  [     [`r -= n`]    [`X&`]    [`return r += -n`]    []  ]  [    [`a - n`]    [`X`]    [``        {           X tmp = a;          return tmp-= n;         }    ``]    []  ]  [    [`b - a`]    [`Distance`]    [`a < b ?  distance(a,b) : -distance(b,a)`]    [pre: there exists a value `n` of `Distance` such that `a + n == b`. `b == a + (b - a)`.]  ]  [    [`a\[n\]`]    [convertible to T]    [`*(a + n)`]    [pre: a is a *Readable Iterator*]  ]  [    [`a\[n\] = v`]     [convertible to T]    [`*(a + n) = v`]    [pre: a is a *Writable iterator*]  ]  [    [`a < b`]    [convertible to `bool`]    [`b - a > 0`]    [`<` is a total ordering relation]  ]  [    [`a > b`]    [convertible to `bool`]    [`b < a`]    [`>` is a total ordering relation]  ]  [    [`a >= b`]    [convertible to `bool`]    [`!(a < b)`]    []  ]  [    [`a <= b`]    [convertible to `bool`]    [`!(a > b)`]    []  ]  [    [`iterator_traversal<X>::type`]    [convertible to `random_access_traversal_tag`]    []    []  ]][endsect][endsect]

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -