【NOIp复习】STL

String

初始化

声明:
string s1;      默认构造函数,s1为空串
string s2(s1);   将s2初始化为s1的一个副本
string s3("valuee");   将s3初始化一个字符串面值副本
string s4(n,'c');   将s4 初始化为字符'c'的n个副本
读入:
cin>>s5;  读取有效字符到**遇到空格**
getline(cin,s6);  读取字符到**遇到换行**,空格可读入,直到‘
’结束('
'不会被读入)
getline(cin,s7,'a'); 一个直到‘a’结束,其中任何字符包括'
'都能够读入

操作

s.empty()  判断是否为空
s.size() 或 s.length() 返回字符的个数
s[n]  返回位置为n的字符,**从0开始**计数

string支持+连接两个string或一个string与字符串,但两个字符串是不能用+连接的。(+操作符等效于s.append())

==和!=也是可以用的

函数

s.insert(it,p);  把字符串p插入到it的位置
s.insert(p,s2,poe2,len); 在下标p**之前**插入s2下标从poe2开始长度为len的元素
s.insert(pos,cp,len);  下标pos**之前**插入cp数组的前len个元素

s.assign(n,t);  用n个t的副本替换s
a.assign(s1,pos2,len);从s1的下标pos2开始连续替换len个。
s.replace (3,3,"good") ;   从第三个起连续三个替换为good
s.substr(i,j)   截取s串中从i到j的子串
string::npos 字符串结束的pos

s.erase(3) 删除第四个元素
s.erase (0,4) 删除第一到第五个元素
【string的下标是从0开始的】

s.find ( " cat " ) ;  超找第一个出现的字符串”cat“,返回其下标值,查不到返回string::npos,也可查找字符;
s.append(args); 将args接到s的后面【相当于s+args】
s.compare ( " good " ) ;  s与”good“比较相等返回0,比"good"大返回1,小则返回-1;
reverse ( s.begin(), s.end () );  反向排序函数,即字符串反转函数

map

#include <map>
map<string,int> dict;//声明
dict.insert(pair(s1,n1));//插入元素
UDT_MAP_INT_CSTRING::iterator it=dict.find(key);
//it->first是key,it->second是value
dict.count(key);//统计个数
//map中元素按照key自然升序,可以用binary_search的东西
原文地址:https://www.cnblogs.com/leotan0321/p/6081371.html