主要讲解具体几个常用内置函数的用法
string:
//string 动态字符串
string s;
s="abc";//直接赋值
string st[100];
cout<<s[0]<<endl;//string 支持下标索引
s.length();s.size();//返回s的长度
string s1,s2;
s1="ak",s2="98";
cout<<(s1+s2)<<endl;//支持"+"连接
s1=s2;//将s2的值赋给s1
s1==s2;//类似有>= <= < > !=的关系运算符,按字典序从前往后比较
s.empty() //空为true
s.clear() //清空
swap(s1,s2)//交换字符串
s.push_back()//尾部添加字符(可以是字符串或单个字符)
s.pop_back()//尾部删除一个字符
s.insert();//插入函数
//s.insert(index,str)
string str1=s1.insert(1,s2);//在s1的index为1处插入s2
//str1="a98k";
//s.insert(index,count,str)
string str2=s1.insert(2,3,'7');//在s1的index为2处插入count为3的7
//str2="ak777";
s.begin();//返回s的起始地址
s.end();//返回s的最后一个字符的后一位地址
string::iterator iter;//迭代器(类似于指针),迭代器仅允许自加自减操作
//循环输出
for(string::iterator iter=s.begin();iter!=s.end();iter++)
cout<<*inter;
s.erase();//删除函数
//s.erase(pos,n) 删除从pos开始的n个字符
string str3="123456";
str3.erase(3,2);//str3="1236"
str3.erase(3); //str3="123“,默认pos及其以后全删除
//s.erase(iterator first,iterator second) 删除[first,second)的字符
str3.erase(str3.begin()+3,str.begin()+5); //str3="1236"
str3.erase(str3.begin()+3);//str3="12356" 删除单个字符
//string中s.find()参考链接: https://www.cnblogs.com/wkfvawl/p/9429128.html
s.find();//查找函数
//s.find(str)返回查找子串(第一个)的第一个字符的地址,没有则返回npos
string str4="the is bk is the is";
string::size_type pos;
pos=str4.find("bk");//pos=7
if(pos!=string::npos) cout<<pos;
else cout<<"no find!"<<endl;
//s.find_first_of(),s.find_last_of()返回子串在母串首次以及最后一次的位置
pos1=str4.find_first_of("is");//pos1=4
pos2=str4.find_last_of("is"); //pos2=18
//s.find(str,pos) 查找pos后子串的位置(包括pos位置)
pos3=str4.find("s",7);//pos3=11
//查找所有字串在母串中出现的位置
pos4=0;//从首地址开始
while((pos4=str4.find("s",pos4))!=string::npos){
cout<<pos4<<' ';
pos4++;
}
//s.rfind()反向查找子串在母串中的位置,用于判别字串是否唯一
pos=str4.rfind("s");
//上面链接有例题,建议看看
vector:
//vector 动态数组
vector <string> a(10);//10个字符串型
vector <int> a(10,1);//10个整数型,值均为1
vector <int> a(b);//将b的值赋给a
vector <int> a;
//string和vector的常用函数基本一致,以下重复不赘述
a.push_back();
a.pop_back();
a.begin();a.end();
a.size();
a.empty();
a.clear();
a.erase();
a.insert();
a.swap(b);//swap(a,b)均可
cout<<a[0]<<endl;//支持下标索引
vector<int>::iterator iter;
//以下不一样的函数
a.back();//返回a的最后一个元素
a.front();//返回a的第一个元素
set:
//set 其中元素唯一,有序
set <int> s;
s.insert(5);//向s中插入元素5
//重复
s.empty();
s.begin();s.end();
s.clear();
s.clear();
s.size();
set <int>::iterator iter;//不支持下标索引
//不一样的函数
s.find(value);//若存在则返回value的迭代器的值,否则返回s.end()
iter=s.find(1);
if(s.find(1)!=s.end()) cout<<"存在";
s.count(value);//统计value出现次数1或0,可以用来判断是否存在value
s.erase(value);//删除value值
map+pair:
//pair将两个元素打包
pair<int,string> s;
s.first=1,s.second="ac";
s=make_pair(1,"ac");//赋值
//map参考链接: https://www.cnblogs.com/ZY-Dream/p/10037931.html
//map是key(键),value(值)的形式,键唯一,值不唯一,自动排序
map<int,string> m;
m[key]=value;//数据的插入3种
m.insert(map<int,string>::value_type(1,"a"));
m.insert(pair<int,string>(1,"a"));
map<string,map<int,string> > a;//map的嵌套使用
for(map<string,map<int,string>::iterator iter=a.begin();iter!=a.end();iter++){
cout<<iter->first<<' ';
for(map<int,string>::iterator iter2=iter->seond.begin();iter2!=iter->second.end();iter2++)
cout<<iter2->first<<' '<<iter2->second;
}
//map的常用函数,重复不说
m.count();//0或1
m.begin();m.end();
//m.find(key);
//m.erase(key);另外两种string中有
m.size();
m.swap();
m.clear();
m.empty()
证明我今天干活了