C++STL简要使用教程

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;	
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值