`

STL容器的基本特性和特征

阅读更多
1. STL有6种序列容器类型
(1)vector
它提供对元素的随即访问,在尾部添加和删除元素的时间是固定的,在头部或中部插入和删除元素的复杂度为线性时间。

(2)deque
在文件中声明。
是双端队列,支持随即访问。从deque的开始与末尾位置插入和删除元素的时间是固定的。
尽管vector和deque都提供对元素的随机访问和在序列中部执行线性时间的插入和删除操作,但vector容器执行这些操作时速度更快一些。

(3)list
是双向链表,插入删除元素时间固定。不支持随机访问。与vector不同是,当向容器中插入或删除元素后,链表迭代器指向元素将不变。
    解释一下:如果一个vector有5个元素,中间插入一个,那么第五个元素包含的值将是以前第四个元素的值,因此,迭代器指向的位置不变,但是数据不同。然而,在链表中插入新元素并不会移动已有的元素,而只是修改链接信息。 指向某个元素的迭代器仍然指向该元素,也就是值相同,链接的位置不同了。

(4)queue
在头文件中声明。 queue是一个适配器类,底层类默认为deque。 它不允许随机访问队列元素,甚至不允许遍历队列。可以将元素添加到队尾,查看队尾和队首的元素的值,检查元素数目和测试队列是否为空。

(5)priority_queue
与queue的不同是,最大的元素总是在队首,也是一个适配器类,默认的底层类是vector。
可以修改用于确定哪个元素放在队首的比较方式,方法是提供一个可选的构造函数参数。

(6)stack
也是一个适配器类,默认的底层实现为vector。 不允许随机访问堆栈元素,甚至不允许遍历堆栈。可以压入到栈顶,从栈顶弹出元素,查看栈顶元素的值,检查元素数目和测试堆栈是否为空。

2. STL有4种联合容器:set,multiset, map, multimap;

联合容器将值与关键字关联在一起,使用关键字来查找值。
关联容器的长处在于,它提供了对元素的快速访问。 与序列相似,联合容器也允许插入新元素,不过不能指定元素的插入位置。原因是联合容器通常包含用于确定数据存放位置的算法,以便能够很快检索信息。

(1)set,multiset
前两种是在set头文件中(以前分别为set.h和multiset.h);
值的类型与关键字相同。 set删除相同的元素,multiset不会。
(2)map,multimap
后两种是在map头文件中(以前分别为map.h和multimap.h)。
值的类型与关键字不同。 map关键字唯一,multimap关键字不唯一。
分享到:
评论

相关推荐

    c++/STL容器设计相关

    本节将深入探讨STL容器的设计与使用,包括其基本概念、类型、操作以及在实际编程中的应用。 一、STL容器概述 STL容器是一种对象,它们可以存储、管理和操作其他对象。STL提供了多种不同类型的容器,如向量(vector...

    STL的基本概念和常用容器

    ### STL的基本概念与常用容器详解 #### 一、STL简介 STL(Standard Template Library,标准模板库)是C++编程语言中的一个重要组成部分,它为C++开发者提供了丰富的工具集合,极大地提高了程序的开发效率和质量。...

    STL容器之array和vector.zip

    在这个“STL容器之array和vector.zip”压缩包中,我们主要探讨两个重要的容器:`std::array`和`std::vector`。它们都是用于存储元素序列的容器,但有着不同的特性和使用场景。 `std::array`是C++11引入的一个固定...

    STL容器multiset的使用

    在这个话题中,我们将深入探讨STL容器中的`multiset`,并结合VC6.0环境下的代码示例进行讲解。 **一、STL multiset简介** `multiset`是STL中的一种关联容器,它类似于`set`,但允许插入重复元素。`multiset`内部...

    STL的容器deque的使用

    **STL中的deque容器详解** `deque`(双端队列)是C++标准模板库(STL)中的一种重要容器,它提供了类似数组的功能,同时支持在两端...通过掌握deque的特性和用法,我们可以根据需求选择合适的容器,提升程序的性能。

    c++ 自己动手实现STL容器之array

    STL容器是STL的核心部分,它们提供了数据存储和组织的方式。在这个主题中,我们将深入探讨“自己动手实现STL容器之array”。 `array`是C++11引入的一个静态数组容器,它提供了一个固定大小、连续内存的数组,其大小...

    STL常用容器1

    通过选择合适的数据结构(即STL容器),可以优化代码性能,提高代码的可读性和可维护性。在实际项目中,我们应该根据问题的特性来选择最适合的容器,而不是盲目地使用某一特定类型的容器。学习和实践STL,能帮助我们...

    Effective STL Effective STL Effective STL

    7. **内存管理**:STL容器通常负责自己的内存管理,但程序员仍需了解内存分配和释放的基本规则,以避免内存泄漏和悬挂指针。 8. **STL与标准库的其他部分**:Meyers还介绍了STL如何与其他标准库组件,如智能指针和...

    STL入门 STL入门 STL入门 STL入门 STL入门 STL入门

    它们各自有不同的特性和用途,例如vector适合随机访问,list则支持快速插入和删除。 3. **算法(Algorithm)**:STL提供了一系列的算法,如排序、查找、拷贝等,这些算法可以作用于不同的容器,通过迭代器来访问元素...

    stl容器map的使用

    在这个主题中,我们将重点讨论STL容器之一——`map`的使用。`map`是一个关联容器,它可以存储键值对(key-value pairs),其中每个键都是唯一的,并且通过键来访问对应的值。 ### 1. `map`的基本概念 `map`是一个...

    STL 定义的具体容器类

    STL定义了三种基本容器类型:顺序性容器、关联式容器以及容器适配器。每种容器类型都有其独特的特性和应用场景。 #### 二、顺序性容器 顺序性容器是STL中一类重要的容器,主要特点是元素之间具有明显的先后顺序,...

    C++_STL之set容器使用方法

    ### C++ STL之set容器使用方法 #### 一、引言 在C++标准模板库(STL)中,`set`容器是一种非常...了解其基本特性和使用方法对于提高程序开发效率至关重要。希望本文能够帮助读者更好地理解和掌握`set`容器的使用技巧。

    C++语法介绍,用C++实现STL容器的底层原理,尝试C++的新特性.zip

    在"C++语法介绍,用C++实现STL容器的底层原理,尝试C++的新特性.zip"这个压缩包中,我们可以期待深入学习C++的核心概念、标准模板库(STL)的实现原理以及最新C++标准引入的新特性。 首先,C++语法是理解任何C++...

    c++学生选课软件stl实现

    1. **容器的使用**:STL中的容器类如vector、list和set,为数据的存储和管理提供了便利。例如,可以使用vector来存储学生的选课信息,其动态扩展的特性使得在选课过程中添加或删除课程变得简单。set则可以用来保存...

    ACM STL的应用

    此外,对STL容器的使用和算法的选择也需要考虑到空间复杂度,以减少内存消耗。 7. 在线评测系统的应用:ACM/ICPC竞赛中,选手们需要在有限的时间内提交代码并通过在线评测系统(如ZOJ)进行测试。熟悉在线评测系统...

    STL标准模板库vector容器

    算法是用于操作容器中的数据的函数模板集合,STL的算法库非常庞大,按照操作特性可以分为质变算法和非质变算法。质变算法会修改容器中的元素,如拷贝、替换、删除等操作。非质变算法则不修改容器中的元素,如查找、...

    C++精选代码库。包含常用STL容器模拟实现、algorithm算法头文件函数demo

    在C++编程语言中,STL(Standard Template Library,标准模板库)是其...通过分析和使用这些示例,不仅可以学习到基本用法,还能发现更高级的应用技巧,例如模板元编程、迭代器的使用以及C++11及更高版本引入的新特性。

Global site tag (gtag.js) - Google Analytics