C++标准模板库STL最强学习总结!

Vector

定义方式:

#include<vector>
vector<int> name;
vector<char> name;
vector<string> name;
vector<node> name;  node为结构体
vector<int > name[100];

用法类似数组,所以像vector<vector<int> > name,其中一维是一个数组的数组。

访问方法:

1.通过下标访问,name[index];
2.迭代器访问,

for(vector<int>::iterator it = vi.begin();it!=vi.end();it++)
{
    
    
    cout<<*it<<endl;
}

常用函数(不全):

push_back(x), 末尾添加元素x
pop_back(x), 删除vector末尾元素x
size(), 获取vector中元素个数
clear(), 清空vector所有元素
insert(), insert(it,x),在it处插入x
erase(), erase(it),删除迭代器it处的元素
erase(first,last), 删除[first,last)内所有元素

vector可以存储数据,还可以当作邻接表存储图。

set

定义方式:

#include<set>
set<typename> name;

还可以定义数组,与vector类似。
这个容器基于红黑树,会自动排序和去重。

访问方法:

与vector相同

常用函数(不全):

insert(x), 插入元素
find(value), 返回set对应值为value的迭代器。
size(), 获取set中元素个数
clear(), 清空set所有元素
erase(it), 删除迭代器it处的元素
erase(value), 删除值为value的元素
erase(first,last), 删除[first,last)内所有元素

使用unordered_set,只去重,不排序。

map

一种映射,可以将任何类型映射到任何类型。基于红黑树,按键值(索引)自动排序。

定义方式:

#include<map>
map<typename1,typename2> name;
ep: map<string,int> mp;

访问方式:

迭代器访问

for(map<char,int>::iterator it = mp.begin();it!=mp.end();it++)
{
    
    
	cout<<it->first<<"  "<<it->second<<endl;
}

常用函数(不全):

find(key), 返回键值为key的迭代器。
erase(it), 删除迭代器it处的元素
erase(key), 删除映射的键值为key的元素
erase(first,last), 删除[first,last)内所有元素
size(), 获取map中映射个数
clear(), 清空vector所有映射

建立字符与整数之间关系、字符串与字符串关系等待常常用map,unordered_map只映射而不按键值排序。
有时无法映射时会采用pair<name1,name2> name代替,绑定两个元素的关系。

queue stack string algorithm

可自行查找常用函数,不难。
上面这些是最近应对面试题所学的STL模板库,发现真的方便很多,总之,多学多见吧。

猜你喜欢

转载自blog.csdn.net/weixin_43916997/article/details/114549509