重点库
<vector> <string> <algorithm>
以后遇到
<queue> <stack> <set> <map> <bitset> <functional> <complex>
----------------------------------------------------------
c标准库
<cstring>
strlen() 字符串长度
strcmp() 字符串比较
strcpy() 字符串拷贝
menmset() 暴力清空
mencoy() 暴力拷贝
介绍重要函数:
1.menmset()
eg:menset(str,0,size(str));//这个函数原理是逐字节填写,一个整形元素有四个字节,就会多输入三遍一样的值(0和-1除外)
2.strlen(str);//表示str的字符串长度
-------------------------------------------------------------------
<cmath>
三角函数 指数函数 浮点整形函数
<cstdlib>
qsort();c语言快排(一般不使用)
————————————————————————————————————
c++STL<vector>数组
一, vector‘超级数组’
即可以用下标访问,又可以像链表一样动态改变长度
1.作为普通数组的用法
vector<int> arr[100];
相当于 int arr2[100];
2.作为链表//链表意义(动态决定数组长度)
vector<int> a;
a.push_back(1);
a.push_back(2);
a.push_back(3);//a[0]=1;
二,vector里的’指针‘(迭代器)
vector<int>::iterator p1;
相当于 int* p1;
vector中可以这样遍历:
vector<int> arr(123);
vector<int>::iterator p2;
for(p2=arr.begin();p2!=arr.end();p2++){
cout<<*p2<<endl;
三,vector常见操作
list.size();//数组元素个数
list.clear();//一键清空数组(当用vector作为链表时使用,一键删除所有元素,使里面一个元素都没有)
list.empty();//数组是否为空
list.begin();
list.end();
list.erase(p1);//删除数组某个迭代器所在位置的元素
list.push_back(1);
list.pop_back();//删除数组最后一个元素
————————————————————————————————————————
c++STL<string>数组
string str1 =" hello ";
字符串string可以看作一个特殊的vector//vector<char> str1;
一,string基本操作
vector有的操作string基本都有,唯一的区别是size的复杂度
str
string str1 =" hello ";
str.length(); str.size();//这两个函数表示数组中元素数量
str.insert(1,"aaa");//在下标为1处插入一个字符或字符串
str.insert(str.begin(),"aaa");//在迭代器处插入一个字符或字符串
str.c_str();//返回一个c语言字符串
str.append(str2);//把str2拼接到str后面
str.compare(str2);//返回str和str2的返回结果(等同于strcmp(str,str2);)
str==str2;//strcmp(str,str2)==0;
str+=str2;//str.append(str2);
str+='a';//str.push_back('a');
--------------------------------------------------------------------
c++STL<algorithm>算法函数
一。sort快速排序
int arr[]{2,3,1,4,5};
int a=5;
sort(arr,arr+n);//一开始的量为排序开始指针,例子里为数组的名称,它指向数组的0号元素,最后的量为排序结束指针,它指向的是最后一个元素的下一个元素 sort(arr.begin(),arr.end());
2.sort可以自定义比较函数
int cmp(int a;int b){
return a>b;
}
int main(){
sort(arr.begin(),arr.end(),cmp);
}//即可以完成降序
二,min(1,2)//较小值(同类型的值)
max(1,2)//较大值(同类型的值)
三,mth_element(arr.begin(),arr.begin()+n,arr.end());
//第一个位置是数组的开始位置,最后一个是数组的结束位置,中间的值是你需要查找的值(比如你的数组刚排好序,你需要输出这个数组的三号位置(即第四个元素)的元素,就可以用这个)
四,交换任意两个同类型变量
swap(arr[0];arr[1]);
五,反转数组
reverse(arr.begin(),arr.end());
六,去重函数(需要在sort排序后使用)
int a= unipue(arr.begin(),arr.end())-arr.begin();
七,如果把一个数插入有序数组,它应该插在哪个位置
int a=lower_bound(arr.begin(),arr.end(),2)-arr.begin();
//表示第一个应该插入位置的指针
int a=upper_bound(arr.begin(),arr.end(),2)-arr.begin();
表示最后一个应该插入位置的指针
<map>(映射)
pair<int,int> pr{"小明",100};
//可以让两个数据类型不一样的元素绑定在一起。