设为首页 加入收藏

TOP

2.2.1.可变性
2013-10-07 00:32:08 来源: 作者: 【 】 浏览:68
Tags:2.2.1. 可变性

2.2.1.可变性

多数容器允许修改其包含的对象,或重排列其包含的对象。例如,修改std::list中的元素有两个途径,一是经由front()、back()返回的对元素的引用,二是经由变动性(非const)迭代器的解引用,同时std::list允许通过insert()、erase()和sort()操作修改元素的排列。这些容器的明显特征是具备可变性,不太明显的特征则是其可变性分为两种形式,这对集合的理解和分类都至关重要。

定义

元素可变集合允许对其元素进行修改。元素不可变集合不允许这样的操作。

定义

排列可变集合允许对其元素排列进行修改。排列不可变集合不允许这样的操作。

所有标准一致容器都是排列可变及元素可变的。

一些容器,比如STLSoft的多维数组族(在Imperfect C++(www.cppentry.com)第33章中有详细讨论),允许对其元素进行修改,但其结构是固定的。这样的容器在构造函数中开始持有其容纳的对象,直到这些对象在容器的析构函数中被销毁。这些容器是元素不可变的。虽然在实际应用中几乎没有听说过,但一个元素可变而排列不变的容器是可能的,不过标准库中没有这样的容器。(其他语言中有这样的容器,比如Python、Java和.Net。这些语言中,不变的集合元素类型(通常是字符串)是常见的。)

一个集合如果是元素不可变且元素排列不可变的,那么这个集合是一个不可变集合。

定义

不可变集合不允许对其元素或元素排列的修改。

设计容器的目的在于,可以用它保存直到运行时才能确定的内容。虽然不可变容器与该目的相矛盾,然而,在更加广阔的集合的世界中,许多,即便不是大多数,要么是只元素可变,要么是只元素排列可变,确实也存在不可变的情况。其中原因可能是,能通过集合接口进行访问的这些元素,是从底层的一个“一次返回全部元素”的API得到的;或者是根本没有办法对元素进行修改。在本书第二部分和第二卷中,我们将看到很多具有不同形式的可变性的集合。

【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇31.2. 分散/聚集 I/O 下一篇2.3.2 变量名

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: