NOIP学习小站
西安交通大学附属中学航天学校

数据结构

tangyj626阅读(267)赞(13)

首先,竞赛中并不推荐自定义“类”来解决问题,但是我们要使用本章节介绍的标准模板库(STL),需要了解一些类的基础知识。如果只是简单地使用类,那么类的使用方法和之前介绍的结构体类似。 前面介绍过结构体,我们已经知道了结构体是由一批数据组合而成...

模板函数

tangyj626阅读(255)赞(10)

一、自定义交换函数 我们来看一个特殊的场景,要自定义一个交换函数用来交换两个变量的值(这里不使用C++内置的swap函数)。如果我们要交换两个int变量的值,函数参数使用引用传参的方式,很容易就能写出下面的函数: 当然,这个函数只能交换两个...

模板类

tangyj626阅读(132)赞(11)

有了前面模板函数的铺垫,我们再来看模板类。对于模板类,大家了解基本用法即可,特别是模板类的使用方法,因为后续介绍的标准模板库STL中的容器都是基于模板类来实现的。 首先我们来看一个普通的类: 类MyList就像一个功能简单的“队列”,可以使...

STL与STL容器

tangyj626阅读(210)赞(10)

一、标准模板库STL STL 是“Standard Template Library”的缩写,中文译为“标准模板库”。STL 是 C++ 标准库的一部分,不用单独安装。2011年4月14日,CCF公布了《关于NOI系列赛编程语言使用限制的规...

顺序性容器之向量vector

tangyj626阅读(446)赞(10)

一、vector简介 STL容器中的vector是一种顺序性容器。vector和数组相似,但其大小可以不预先指定,并且能自动扩展。vector容器内存储的元素可以像数组元素一样访问和赋值,可以将vector看作是“动态数组”。 在创建一个v...

顺序性容器之列表list

tangyj626阅读(267)赞(9)

一、list简介 列表list容器本质就是前面介绍过的双向链表。list是一个线性链表结构,它的数据由若干个节点构成,每一个节点都包括一个信息块(即实际存储的数据)、一个前驱指针和一个后继指针。它无需分配指定的内存大小且可以任意伸缩,这是因...

顺序性容器之双端队列deque

tangyj626阅读(166)赞(12)

一、deque简介 双端队列deque是一种优化了的、可以高效地对序列两端元素进行添加和删除操作的基本序列容器。它允许较为快速地随机访问,但它不像vector把所有的对象保存在一块连续的内存块,而是采用多个连续的存储块。向deque两端添加...

容器适配器之栈stack

tangyj626阅读(200)赞(9)

一、stack简介 前面已经介绍过栈(线性表——栈),栈(stack)是一种典型的LIFO(last in first out,后进先出)线性表结构,STL中有专门的stack容器。其实stack是一种容器适配器,默认情况下内部是基于deq...

容器适配器之队列queue和优先队列priority_queue

tangyj626阅读(297)赞(9)

一、queue简介 前面已经介绍过队列(线性表——队列),队列(queue)是一种典型的FIFO(first in first out,先进先出)线性表结构,STL中有专门的queue容器。其实queue是一种容器适配器,默认情况下内部是基...

关联式容器之集合set与多重集合multiset

tangyj626阅读(317)赞(9)

一、集合简介 set,又称集合,实际上就是一组元素的集合,但其中所包含的元素的值是唯一、且按一定顺序排列的。因为其内部是通过非线性的二叉树结构方式来组织(具体是借助红黑树的结构原理实现的),所以在插入的时候比vector快,但查找和末尾添加...

关联式容器之映射map与多重映射multimap

tangyj626阅读(412)赞(8)

一、映射简介 map,提供一种“键—值”关系的一对一(键值对)的数据存储能力。这里的一对一关系,其中第一个可以称为关键字,第二个可能称为该关键字的值。其“键”在 map 容器中是唯一,且按一定顺序排列(可以将 set 也看成是一种简单“键—...

特殊容器之二进制有序集bitset

tangyj626阅读(207)赞(11)

C++的bitset是一种类似数组的结构,它的每一个元素只能是0或1,每个元素仅用1bit空间。从整体效果来看,可以简单认为bitset中存放的就是一个无符号二进制整数。 一、bitset的定义和初始化 要使用bitset,首先需要引入头文...