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

📄 set.rst

📁 C++的一个好库。。。现在很流行
💻 RST
字号:
.. Sequences/Classes//set |40

set
===

Description
-----------

``set`` is a |variadic|, `associative`__, `extensible`__ sequence of types that 
supports constant-time insertion and removal of elements, and testing for membership.
A ``set`` may contain at most one element for each key.

__ `Associative Sequence`_
__ `Extensible Associative Sequence`_

Header
------

+-------------------+-------------------------------------------------------+
| Sequence form     | Header                                                |
+===================+=======================================================+
| Variadic          | ``#include <boost/mpl/set.hpp>``                      |
+-------------------+-------------------------------------------------------+
| Numbered          | ``#include <boost/mpl/set/set``\ *n*\ ``.hpp>``       |
+-------------------+-------------------------------------------------------+


Model of
--------

* |Variadic Sequence|
* |Associative Sequence|
* |Extensible Associative Sequence|


Expression semantics
--------------------

In the following table, ``s`` is an instance of ``set``, ``pos`` is an iterator into ``s``, 
and ``x``, ``k``, and |t1...tn| are arbitrary types.

+---------------------------------------+-----------------------------------------------------------+
| Expression                            | Semantics                                                 |
+=======================================+===========================================================+
| .. parsed-literal::                   | ``set`` of elements |t1...tn|; see                        |
|                                       | |Variadic Sequence|.                                      |
|    set<|t1...tn|>                     |                                                           |
|    set\ *n*\ <|t1...tn|>              |                                                           |
+---------------------------------------+-----------------------------------------------------------+
| .. parsed-literal::                   | Identical to ``set``\ *n*\ ``<``\ |t1...tn|\ ``>``;       |
|                                       | see |Variadic Sequence|.                                  |
|    set<|t1...tn|>::type               |                                                           |
|    set\ *n*\ <|t1...tn|>::type        |                                                           |
+---------------------------------------+-----------------------------------------------------------+
| ``begin<s>::type``                    | An iterator pointing to the beginning of ``s``;           |
|                                       | see |Associative Sequence|.                               |
+---------------------------------------+-----------------------------------------------------------+
| ``end<s>::type``                      | An iterator pointing to the end of ``s``;                 |
|                                       | see |Associative Sequence|.                               |
+---------------------------------------+-----------------------------------------------------------+
| ``size<s>::type``                     | The size of ``s``; see |Associative Sequence|.            |
+---------------------------------------+-----------------------------------------------------------+
| ``empty<s>::type``                    | |true if and only if| ``s`` is empty; see                 |
|                                       | |Associative Sequence|.                                   |
+---------------------------------------+-----------------------------------------------------------+
| ``front<s>::type``                    | The first element in ``s``; see                           |
|                                       | |Associative Sequence|.                                   |
+---------------------------------------+-----------------------------------------------------------+
| ``has_key<s,k>::type``                | |true if and only if| there is one or more elements       |
|                                       | with the key ``k`` in ``s``; see |Associative Sequence|.  |
+---------------------------------------+-----------------------------------------------------------+
| ``count<s,k>::type``                  | The number of elements with the key ``k`` in ``s``;       |
|                                       | see |Associative Sequence|.                               |
+---------------------------------------+-----------------------------------------------------------+
| ``order<s,k>::type``                  | A unique unsigned |Integral Constant| associated with     |
|                                       | the key ``k`` in ``s``; see |Associative Sequence|.       |
+---------------------------------------+-----------------------------------------------------------+
| .. parsed-literal::                   | The element associated with the key ``k`` in              |
|                                       | ``s``; see |Associative Sequence|.                        |
|    at<s,k>::type                      |                                                           |
|    at<s,k,def>::type                  |                                                           |
+---------------------------------------+-----------------------------------------------------------+
| ``key_type<s,x>::type``               | Identical to ``x``; see |Associative Sequence|.           |
+---------------------------------------+-----------------------------------------------------------+
| ``value_type<s,x>::type``             | Identical to ``x``; see |Associative Sequence|.           |
+---------------------------------------+-----------------------------------------------------------+
| ``insert<s,x>::type``                 | A new ``set`` equivalent to ``s`` except that             |
|                                       | ::                                                        |
|                                       |                                                           |
|                                       |     at< t, key_type<s,x>::type >::type                    |
|                                       |                                                           |
|                                       | is identical to ``value_type<s,x>::type``.                |
+---------------------------------------+-----------------------------------------------------------+
| ``insert<s,pos,x>::type``             | Equivalent to ``insert<s,x>::type``; ``pos`` is ignored.  |
+---------------------------------------+-----------------------------------------------------------+
| ``erase_key<s,k>::type``              | A new ``set`` equivalent to ``s`` except that             |
|                                       | ``has_key<t, k>::value == false``.                        |
+---------------------------------------+-----------------------------------------------------------+
| ``erase<s,pos>::type``                | Equivalent to ``erase<s, deref<pos>::type >::type``.      |
+---------------------------------------+-----------------------------------------------------------+
| ``clear<s>::type``                    | An empty ``set``; see |clear|.                            |
+---------------------------------------+-----------------------------------------------------------+


Example
-------

.. parsed-literal::

    typedef set< int,long,double,int_<5> > s;

    BOOST_MPL_ASSERT_RELATION( size<s>::value, ==, 4 );
    BOOST_MPL_ASSERT_NOT(( empty<s> ));
    
    BOOST_MPL_ASSERT(( is_same< at<s,int>::type, int > ));
    BOOST_MPL_ASSERT(( is_same< at<s,long>::type, long > ));
    BOOST_MPL_ASSERT(( is_same< at<s,int_<5> >::type, int_<5> > ));
    BOOST_MPL_ASSERT(( is_same< at<s,char>::type, void\_ > ));


See also
--------

|Sequences|, |Variadic Sequence|, |Associative Sequence|, |Extensible Associative Sequence|, |set_c|, |map|, |vector|

⌨️ 快捷键说明

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