类别: 容器 | 组件类型: 概念 |
X | 唯一已排序关联容器类型的模型 |
a | 类型对象X |
t | 类型对象X::value_type |
k | 类型对象X::key_type |
p, q | 类型对象X::iterator |
c | 类型对象X::key_compare |
名称 | 表达式 | 类型需求 | 返回类型 |
---|---|---|---|
范围构造函数 |
X(i, j) X a(i, j); |
i和j是其值类型可转换为T [1]. | |
具有比较的范围构造函数 |
X(i, j, c) X a(i, j, c); |
i和j是其值类型可转换为T [1]. c是类型对象key_compare. | |
提示插入 | a.insert(p, t) | 迭代器 | |
插入范围 | a.insert(i, j) | i和j是其值类型可转换为X::value_type. [1] | void |
名称 | 表达式 | 前置条件 | 语义 | 后置条件 |
---|---|---|---|---|
范围构造函数 |
X(i, j) X a(i, j); |
[i,j)是有效范围。 | 创建含有范围中的所有元素且这些元素拥有唯一键的关联容器。[i,j)容器使用的比较对象为key_compare(). | size()小于等于从i到j. |
具有比较的范围构造函数 |
X(i, j, c) X a(i, j, c); |
[i,j)是有效范围。 | 创建含有范围中的所有元素且这些元素拥有唯一键的关联容器。[i,j)容器使用的比较对象为c. | size()小于等于从i到j. |
提示插入 | a.insert(p, t) | p在a. | 中是一个非奇异迭代器。t插入a仅当且仅当a不包含其键等同于t的键的元素时。p参数t. | a是一个提示:它指向搜索开始的位置。返回值是一个可取消引用的迭代器,它指向的元素具有与t包含一个其键与a的键相同的元素时。1的大小将递增0. |
插入范围 | a.insert(i, j) | 或是有效范围。 | [i, j)等同于a.insert(t)t针对由范围中的迭代器指向的每个对象或。每个元素都被插入到a仅当且仅当a不包含具有等效键的元素。 | 的大小a最多增加j - i. |
带有提示的插入操作通常呈对数增长,但在t之前立即插入后变为平均恒定时间。p.
插入范围通常为O(N * log(N)),其中N是范围的大小。但是,如果范围按Nvalue_comp()排序,则范围呈线性增长。.
严格的升序 | 唯一的已排序关联容器中的元素始终按键严格按照升序排列。即,如果a是唯一的已排序关联容器,则is_sorted(a.begin(), a.end(), a.value_comp())始终为true。此外,如果i和j是a中的可解引用迭代器,使得i在j之前,则a.value_comp()(*i, *j)始终为true. [2] |
[1] 目前(1998年初),并非所有编译器都支持“成员模板”。如果您的编译器支持成员模板,则i和j可以为符合输入迭代器要求的任何类型。但是,如果您的编译器尚不支持成员模板,则i和j必须为以下类型const T*或以下类型X::const_iterator.
[2] 这是一个比已排序关联容器更严格的不变条件。在已排序关联容器中,我们仅知道每个元素小于或等于其后继元素;但在唯一的已排序关联容器中,我们知道元素必须小于其后继元素。