STL部分用法整理(长期更新)

mac2024-03-28  32

基础不牢,地动山摇。

 

map:

提供一对一的hash

第一个可以称为关键字(key),每个关键字只能在map中出现一次;第二个可能称为该关键字的值(value);

自动建立key - value的对应。key 和 value可以是任意你需要的类型。

两种插入方式:

string s1="hahaha",s2="lalala"; //方法一:使用下标插入 m[s1] = 1; m[s2] = 2; //方法二:定义键值对 pair<string, int> p1; p1 = make_pair(s1, 1); pair<string, int> p2(s2, 2); //直接构造键值对 m.insert(p1); //使用insert接口 m.insert(p2);

调用:

map<string, int>::iterator it; for (it = m.begin(); it != m.end(); it++) { //遍历 cout << it->first << " " << it->second << endl; }

find(key)      返回一个迭代器

empty()         判断map是否为空。为空的话返回真。

size()             返回map的长度

clear()            清空

map.count(Key)        检查key是否存在         (返回值为1或者0,1返回存在,0返回不存在,返回的是布尔类型的值,因为在map类型中所有的数据的Key值都是不同的,所以被count的数要么存在1次,要么不存在)

 

 

 

vecotr:

reserve和resize是vector里两个很重要的方法,有效地使用这两个方法可以减少reallocate memory的次数,提高程序的性能。(这两个函数的区别即容器的capacity(容量)与size(长度)的区别)

resize: 

resize(n)         调整容器的长度大小,使其能容纳n个元素。如果n小于容器的当前的size,则删除多出来的元素。否则,添加采用值初始化的元素。resize(n,t)         多一个参数t,将所有新添加的元素初始化为t。

reserve:

reserve(n)          预分配n个元素的存储空间。  

pair 默认对first升序,当first相同时对second升序;

 

set:

排好序且无重复

 

insert()                  插入元素begin()        返回set容器第一个元素的迭代器end()                    返回一个指向当前set末尾元素的下一位置的迭代器.clear()         删除set容器中的所有的元素empty()                判断set容器是否为空size()                    返回当前set容器中的元素个数count()                 用来查找set中某个某个键值出现的次数find()                   返回给定值值得定位器,如果没找到则返回end()lower_bound(key_value)     返回第一个大于等于key_value的定位器upper_bound(key_value)     返回最后一个大于等于key_value的定位器

 

string的部分用法:

 https://www.cnblogs.com/lanclot-/p/11142202.html

 

 

 

最新回复(0)