vector+set+map+string

一、vector

1、定义:数组,不定长数组

2、头文件:

# include <vector >
using namespace std;


3、初始化定义:

vector <int >ve;
vector <node > ve;
vector <char > ve;
vector <int > V[ MAXN ]

4、相关函数

ve. clear () 移除容器中所有数据。
ve. push_back (i) 存入数据i.
ve. seiz () 返回数组的大小。
ve. begin () 返回迭代器的第一个数据。
ve.end () 返回迭代器的最后一个数据。

二、set

1、定义

集合,满足集合相应的条件。唯一性。
内部使用平衡二叉树,效率较高,插入与删除的复杂度都是O(log(n))级别,内部会自动排序。

2、定义方法

头文件

# include <set >
using namespace


初始化

set <int >se;
set <char > se;
set <int >S[ MAXN ]

3、相关函数

se. begin () 返回指向第一个元素的迭代器
se. clear () 清除所有元素
se. count () 返回某个值元素的个数
se. empty () 如果集合为空,返回true
se.end () 返回指向最后一个元素之后的迭代器,不是最后一个元素
se. erase () 删除集合中的元素
se. find () 返回一个指向被查找到元素的迭代器
se. insert () 在集合中插入元素
se. max_size () 返回集合能容纳的元素的最大限值
se. size () 集合中元素的数目
se. swap () 交换两个集合变量

问题:
将给定一些数据,去下所有重复数据后的数据个数?

4、遍历方法

迭代器

for(set <int >:: iterator z = se. begin (); z != se.end (); {
}

三、map

1、定义
C++中map提供的是一种键值对容器,里面的数据都是成对出现的,如下图:每一对中的第一个值称之为关键字(key),
每个关键字只能在map中出现一次;第二个称之为该关键字的对应值。
内部使用的是平衡二叉树,所以插入的复杂度是O(long(n))级别的。

2、常见题型
给出一个具体的问题进行研究。
UVA 156 Ananagrams 题意:
输入一些单词,找出所有满足以下条件的单词:该单词不能通过字母重排得到输入文本中的另外一个单词。在判断是否满足条件
时,字母不区分大小写,但在输出时应该保留输入中的大小写,按字典序进行排列。

四、string

1、问题与应用

字符串,被封装好的。

2、代码实现

string s;
string v[ MAXN ]

可以具体查看此链接进行了解:https://blog.csdn.net/tengfei461807914/article/details/52203202

五、练习题

https://vjudge.net/contest/239379#overview

密码:HPUACM2018

猜你喜欢

转载自blog.csdn.net/WWJ970529/article/details/81226675
今日推荐