STL(c++)笔记

210 阅读2分钟

auto

多用auto

for(auto i:sth)中的sth可以是有迭代器的东西,i就是sth中的每一个元素

比较的属性

less, less_equal, greater(从大到小), greater_equal是头文件functional中的

int bar[]={15,10,20};

std::sort (bar, bar+3, std::less()); // 10 15 20从小到大

string类

//构造函数

string strs //生成空字符串

string s(str) //生成字符串str的复制品

@string s(str, stridx) //将字符串str中始于stridx的部分作为构造函数的初值

@string s(str, strbegin, strlen) //将字符串str中始于strbegin、长度为strlen的部分作为字符串初值

string s(cstr) //以C_string类型cstr作为字符串s的初值

string s(cstr,char_len) //以C_string类型cstr的前char_len个字符串作为字符串s的初值

strings(num, c) //生成一个字符串,包含num个c字符

@strings(strs, beg, end) //以区间[beg, end](二者都是迭代器)内的字符作为字符串s的初值

以上@行的方法在各函数都可应用

//c_str()

存在从 const char * 到 string 的隐式转换,却不存在从 string到C_string 的自动转换. string.c_str() 返回 C_string。

//长度

length()或者size()返回字符串长度

//比较

s.compare (pos,n, s2,pos2,n2)//用s-s2,返回1,-1,0

直接用比较运算符可以比较字典序

//修改和替换

str.assign(str1)//用str1给str赋值

erase()

s.swap(s1)

insert()

append()

replace()

//输入

getline(cin,s)第三个参数可以指定终止符

//查找

find()从前,rfind()从后

pair类(头文件utility)

//构造

auto my_pair=make_pair(a,b)

pair<类型,类型> my_pair(a,b)

//访问

my_pair.first或者second

//比较

先比first再比second,按字典序

//交换

swap()函数

map类(默认排序是less)

//构造

每个pair可以用{a,b}也可以用make_pair(a,b)

//插入

insert(pair类对象)

count(str)//计算str在各个key中出现的次数

emplace(a,b)//把{a,b}作为pair插入

//查找

find()//返回迭代器类型

//长度

size()

//访问

直接用下标通过key访问value

//删除

erase(key)//删除key对应的pair