c++关于set,map,list,tuple,无穷值,整型与字符串的转换等

  • 定义无穷大/小:
#include<limits.h>
int a=INT_MIN;
int b=INT_MAX;
long long c=LONG_MAX;
long long d=LONG_MIN;
  • 字符串与整形的转换:
string s="12345.6";
int a=stoi(s); //12345  string to int
double b=stod(s); //12345.6  string to double
long long c=stoll(s); //12345  string to long long

int x=12345;
string ss=to_string(x); //"12345"
double y=123.4;
string s=to_string(y);//"123.400000"
  • 如何将浮点数5.258944521514转换为指定小数位数的字符串呢?
  • 用to_string只能保留6位小数。。。可以用stringstream和setprecision()
#include<sstream> //stringstream的头文件
#include<iomanip> //setprecision的头文件
double a=5.258944521514;
string s;
stringstream ss;
ss<<setprecision(10)<<a;
s = ss.str();
cout<<s<<endl;
  • c++tuple的使用:

  • c++set使用:

#include<tuple>
#include<vector>
#include<algorithm>
tuple<int, int, string> t;
vector<tuple<int, int, string> a;
bool cmp(tuple<int, int, string> x, tuple<int, int, string> y){
	return get<1>(x) < get<1>(y); //按照第二列从小到大排序
}
a.push_back(make_tuple(1,2,"as"));
a.push_back(make_tuple(-5,8, "sd"));
a.push_back(make_tuple(8,0, "few"));
a.push_back(make_tuple(4,2, "geeg"));
//按指定类排序
sort(a.begin(), a.end(), cmp);
cout<<get<1>(a[0]);
#include<set>
vector<char> s;
s.insert('1');
s.insert('8');
s.insert('6');
s.insert('2');
s.insert('8');
s.insert('8');
s.insert('5');
//迭代器输出
set<char>::iterator it; //注意两个冒号
for(it=s.begin(); it!=s.end(); it++){ //注意只能用  !=
	cout<<*it<<' ';
}//1 2 5 6 8  set会自动从小到大排序

//判断某元素是否在集合中:
if(s.find('7')==s.end()){
	cout<<"7不在集合s中"<<endl;
}
  • c++map的使用:
#include<map>
map<int, int> kv;
kv[2]=9;
kv[5]=0;
kv[2]=4;
kv[6]=3;
cout<<kv[2]<<endl; //输出4
//如何查找某个key或者输出map呢?使用迭代器
map<int, int>::iterator it;
it = kv.find(5);
if(it!=kv.end()){
	cout<<it->second<<endl; //输出0
}
for(it=kv.begin(); it!=kv.end(); it++){
	cout<<it->first<<' '; //输出key
	cout<<it->second<<' '; //输出value
}
  • c++list使用://list是一个双向链表
#include<list>
list<string> a;
a.push_back("a");  //末尾插入
a.push_back("aa");
a.push_back("ab");
a.push_back("ad");
a.push_front("ac");  //首部插入
a.push_front("fg");
//a.sort()  //默认从小到大排序
a.sort(cmp) // 重载比较函数
//如何输出列表呢?使用迭代器
list<string>::iterator it;
for(it=a.begin(); it!=a.end(); it++){
	cout<<*it<<' ';
}
  • 输出保留n位小数:
#include<iomanip>
double a = 3.56987;
cout<<setprecision(4)<<a<<endl;
  • 输出数据固定宽度:
#include<iomanip>
int a=12;
cout<<set(5)<<a<<endl;
//输出:   12(前面三个空格)
  • 统计vector中某元素出现的个数:
#include<algorithm>
#include<vector>
vector<int> a;
a.push_back(1);
a.push_back(3);
a.push_back(7);
a.push_back(2);
a.push_back(3);
a.push_back(3);
a.push_back(3);
cout<<count(a.begin(), a.end(), 3) //输出4
  • 查找vector中某元素位置:
#include<algorithm>
vector<int>::iterator it;
it = find(a.begin(), a.end(), 2);
cout<<it-a.begin()<<endl;  //输出2第一次出现的位置 3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值