PDF资料 链接: https://pan.baidu.com/s/1q1FlGSUSBUku446GPwi85Q 提取码: hx81
vector
需要#include <vector>
vector<double> v(3);
v[0] = 0;
v[1] = 1;
v[2] = 2;
v.push_back(10);
v.push_back(20);
v.push_back(30);
v.insert(v.begin()+1,100);
v.insert(v.end(),200);
v.erase(v.end()-1); // 删除最后一个200
vector<double>::iterator it = v.begin();
for(it=v.begin(); it!=v.end(); it++)
{
cout<<(*it)<<endl;
}
需要#include <algorithm>
reverse(v.begin(),v.end());
sort(v.begin(),v.end()); //默认从小到达排序
// 使用外部函数来自定义结构体排序
bool cmp(const student &s1,const student &s2)
{
if(s1.age>s2.age)
return 1;
else if(s1.age<s2.age)
return -1;
if(s1.name>s2.name)
return 1;
return 0;
}
vector<student> v;
sort(v.begin(),v.end(),cmp); // cmp不要加括号,不像调用函数
string
需要 #include <string>
string s;
cin>>s; //遇到空格结束
getline(cin,s); // 遇到空格不结束,回车才结束
cout<<s<<endl;
char a[100];
scanf("%s",a); //遇到空格结束 ,需要 #include <stdio.h>
printf("%s \n",a);
s = a; // char * 转为 string
const char *a = s.c_str(); // string转为 const char *
printf("%s",a);
s = s+'a';
s +='0'+i;
s+="HelloWorld";
char c='0'+5;
s = s+c;
s.append( "6" ); // 只能添加字符串
cout<<s<<endl;
s.insert(s.begin(),'T');
s.erase(s.begin()+2);
cout<<s.size()<<endl;
cout<<s.length()<<endl;
s.replace(0,2,"Hello"); // 第0位置开始2个字符 ,替换为Hello
int index = s.find('H');
index = s.find("Hello");
int i = s.compare("Hello"); // 返回值 正负数或者0
cout<<i<<endl;
set
set不可以放重复的元素, multiset可以放重复元素
按照学生的姓名排序,先去重,再自定义排序
typedef struct student{
string name;
int age;
// 比较器放在结构体内部
int operator <(const student &s)const{
int i= name.compare(s.name);
if(i==0)
return false; // 去重
else if(i>0)
return true; // 按照从小到大排序
else
return false;
}
}student;
正序输出和倒序输出:
set<student>::iterator it;
for(it=s.begin(); it!=s.end(); it++)
{
cout<<(*it).name<<" "; //两种输出方法
cout<<it->age <<endl;
}
cout<<endl<<endl;
set<student>::reverse_iterator rit;
for(rit=s.rbegin();rit!=s.rend();rit++){
cout<<(*rit).name<<" "; //两种输出方法
cout<<rit->age <<endl;
}
插入,查找,删除:
// 插入
student stu;
cin>>stu.name;
cin>>stu.age;
s.insert(st);
// 查找
set<student>::iterator it2 = s.find(st);
cout<<it2->name<<endl;
cout<<(*it2).age<<endl;
// 删除
s.erase(st);
map
map不可以放重复的元素, multimap可以放重复元素
map<string,int> mp;
mp["wang"]=20;
mp["zhang"]=10;
map<string,int>::iterator it;
for(it=mp.begin();it!=mp.end();it++)
{
cout<<(*it).first<<":";
cout<<it->second<<endl;
}
mp.erase("wang");
it = mp.find("zhang");
cout<<(*it).first<<":";
cout<<it->second<<endl;