map头文件
Map<int,int>mp; Map<char,int>mp; Map<string,int>mp; Map<vector ,int>mp;
1、判断大整数或者其他数据类型的存在问题。
2、Map会以键从小到大的顺序进行排序(红黑树)
3、Unordered_map,只实现映射,不按key排序
map容器中元素内容的访问
1、mp的访问通过下标进行访问。如:mp[‘c’]=20; mp[int a]=int b;
2、mp通过迭代的方式进行访问,map<int,int>::iterator it
常用函数:
find(key) //返回键为key的迭代器
map<int,int>::iterator it=mp.find(key);
it->first, it->second;来进行访问
mp.erase(it) //it为要删除元素的迭代器
mp.erase(key),
mp.erase(first,last)//first为起始迭代器,last为末尾迭代器的下一个[first,last)
size() //获取map的映射对数
clear() //清除所有元素
algorithm头文件
常用函数:
max(x,y)
min(x,y)
abs(x)
swap(x,y)
fill(a,a+5,-1)//填充数组类型的任意值
reverse(a,a+5)//将数组指针在[it1,it2)之间的元素翻转
sort(a,a+5,cmp)//对数组排序
sort(vi.begin(),vi.end(),cmp)//对vector进行排序
//给出一个排列在全排列中的下一个序列
next_permutation(a,a+5) //对于数组
next_permutation( vi.begin(),vi.end() ) //对于数组
string头文件
注:string是C++新加入的类型;在C语言中,一般使用的是字符数组;
1、 要输入和输出整个字符串,只能使用cin和cout(除非使用str.c_str()进行转换);
1、 scanf和printf是对字符数组的输入输出。
字符串和字符数组的转换
//字符串转字符数组
string name = "abcde";
char buf[6];
strcpy(buf , name.c_str()); //字符串转字符数组,使用strcpy
cout << name.c_str() << endl; //name.c_str()将字符串转换成字符数组
cout << buf << endl;
//字符数组转字符串
char buf[]= "abcde";
string name;
name = buf; //直接复制就可以
cout << name << endl;
string中内容的访问
1、直接像字符数组那样去访问:str[i]
2、通过迭代器进行访问:string ::iterator it ; 内容则用*it表示。
3、string和vector一样,支持对迭代器加减数字,如:str.begin()+3;
常用函数
//直接拼接
string str1="abc",str2="def";
string str3=str1 + str2; //+、+=号进行拼接
/*比较大小
两个string类型可以直接使用 == , != , < , <= , > , >=按照字典序比较大小
*/
if(str1<str2) printf("OK");
length()/size() //返回长度
insert()