c++标准库知识点/c++STL<vector>数组/c++STL<string>数组

重点库
<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};


//可以让两个数据类型不一样的元素绑定在一起。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值