首页 > 其他分享 >常用STL

常用STL

时间:2023-11-25 20:55:05浏览次数:31  
标签:返回 map 常用 set 头文件 STL 元素 数组

vector(动态数组)

vector为可变长数组(动态数组),定义的vector数组可以随时添加数值和删除元素。需要的头文件vector

定义和使用

初始化

//方式一:通过下标访问,假设num数组中已经有了5个元素
cout<<num[4]<<"\n";  //输出第五个数据
//一二维可变数组和普通数组的访问方法一样
 
//方式二:遍历
for(int i=0;i<num.size();i++)
	cout<<num[i]<<" ";//下标范围在[0,num.size()),前开后闭
 
//方式三:智能指针
for(auto i : num)
	cout<<i<<" ";

常用的方法函数

  • c.push_back(element) 在尾部加一个数据
  • c.pop_back() 删除最后一个数据
  • c.size()返回实际数据个数(unsigned类型)
  • c.insert(it,x)向任意迭代器it插入一个元素x O(N),例:c.insert(c.begin()+2,-1) 将-1插入c[2]的位置
  • c.erase(first,last) 删除[first,last)的所有元素

pair 二元组

pair只含有两个元素,可以看作是只有两个元素的结构体。
头文件utility(一般引用了iostream库就行了)

定义和使用

可以创建pair数组,并用first()和second()访问其第一/二个元素。

//定义结构体数组
pair<int,int> a[20];
for(int i = 0; i < 20; i++) {
	//和结构体类似,first代表第一个元素,second代表第二个元素
	cout << a[i].first << " " << a[i].second;
}

queue(队列)

定义与使用

队列是一种先进先出的数据结构

描述可为 在饭堂排队,先排队(进入队列)的人能先点菜(出队列)

头文件queue

方法函数

  • front() 返回队首元素 O(1)
  • back() 返回队尾元素 O(1)
  • push() 尾部添加一个元素副本 进队O(1)
  • pop() 删除第一个元素 出队 O(1)
  • size() 返回队列中元素个数,返回值类型unsigned int O(1)
  • empty() 判断是否为空,队列为空,返回true O(1)

Map

头文件map
映射类似于函数的对应关系,每个x对应一个y,而map是每个键对应一个值。

定义与使用

map<变量类型a,变量类型b>mp;
例如:map<string,int>student;可以建立一个学生对应一个年龄的映射关系

特点

内部用红黑树实现,内部元素具有有序性,查询删除等操作复杂度为O(logN)。
有序性也说明map支持lower_bound()upper_bound()find()(当数据存在时,返回数据所在位置的迭代器,数据不存在时,返回mp.end()
)和erase(),复杂度均为O(logN)。

方法函数

  • count(key) 查看key元素是否存在,因为map中键是唯一的,所以存在返回1,不存在返回0
  • insert({key,value}) 插入元素,插入时要构造键值对

unordered_map

头文件unordered_map

特点

内部用哈希表实现,查找速度非常快(适用于大量的查询操作)。
用法类似于map,均能实现记录映射元素关系。

set 集合

头文件set
有序性,不重复:set容器中的元素不会重复,当插入集合中已有的元素时,并不会插入进去,而且set容器里的元素自动从小到大排序。
类似的还有:
multiset(元素可以重复,且元素有序),unordered_set(元素无序且只能出现一次)

方法函数

  • size()
  • count(element)
  • insert(element)

标签:返回,map,常用,set,头文件,STL,元素,数组
From: https://www.cnblogs.com/2002cjc/p/17834943.html

相关文章

  • gojs常用API
    gojs常用API 操作类API:添加节点:myDiagram.model.addNodeData(node);varnode={};node["key"]="节点Key";node["loc"]="00";//节点坐标node["text"]="节点名称";myDiagram.model.addNodeData(n......
  • Linux常用命令的使用
        ......
  • 【9.0】Python高级之常用模块学习
    【一】re【二】time、datetime【三】os......
  • 【2.0】常用模块之time、datetime模块
    【一】时间模块(time/datetime)【二】表示时间的三种方式在Python中,通常有这三种方式来表示时间:时间戳元组(struct_time)格式化的时间字符串:格式化的时间字符串(FormatString):‘1999-12-06’【三】time(1)导入时间模块importtime(2)时间戳(time)[1]生成时间戳......
  • 【1.0】常用模块之re模块
    【一】正则语法【1】引入一说规则我已经知道你很晕了现在就让我们先来看一些实际的应用。在线测试工具http://tool.chinaz.com/regex/首先你要知道的是谈到正则,就只和字符串相关了。在我给你提供的工具中,你输入的每一个字都是一个字符串。其次,如果在一个位置的一......
  • 【3.0】常用模块之os模块
    【一】文件操作(os)__file__是指当前文件【二】文件路径相关(path)(1)获取当前文件路径(abspath)importos#获取当前文件路径file_path=os.path.abspath(__file__)print(file_path)#E:\PythonProjects\07常用模块学习\03os模块.py(2)获取当前文件所在文件夹路径(dirn......
  • Linux—终端常用指令20218573
     导言:Linux操作系统的终端是用户与系统进行交互的重要界面,通过终端可以执行各种任务和操作。本文将详细介绍Linux终端中的常用指令,为初学者提供一个全面的指南,帮助他们更好地理解和利用Linux系统。1.认识Linux终端:Linux终端是用户通过命令行方式与操作系统进行交互的工具。了......
  • MacBook Pro M2常用软件
    常用快捷键参照苹果官网:https://support.apple.com/zh-cn/HT201236?utm_source=hacpai.comCommand-X:剪切所选项并拷贝到剪贴板。Command-C:将所选项拷贝到剪贴板。这同样适用于“访达”中的文件。Command-V:将剪贴板的内容粘贴到当前文稿或App中。这同样适用于“访达”中的文......
  • 常用的maven dependency依赖
    <dependencies><!--junit--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope><......
  • 常用Linux命令使用
    常用Linux命令find&fdfd默认是正则表达式状态,以及会忽略一些文件-g使用glob通配符-e查找拓展名-x为每一条结果分别执行命令-X为所有结果执行同一个命令-h不跳过隐藏文件-uu不忽略任何东西,包括.gitnore中的-i忽略大小写(fd默认是只能匹配,即输入小写是大小写不......