STL 中的常见实用库函数(适合初学算法者阅读)(持续更新中)

本篇文章主要讲解一些stl库中的一些常用函数,有些没有写全,欢迎评论区补全哦

目录

iostream:

algorithm:

 sort函数:

reverse函数:

 max_element(a,a+n)和min_element(a,a+n)

low_bound函数和upper函数 

swap函数 :

 string和string.h:

find函数

repalce函数 

substr函数 

strlen函数

memset函数

fill函数 

strcmp函数


首先当然是最好用的万能头文件啦:#include 

这个头文件中包含了绝大部分我们所需要的头文件,比如stdio.h algorithm math.h 等等

当然在使用它时记得要配合using namespace std; 使用哟,这是因为using namespace std; 这样命名空间std内定义的所有标识符都有效(曝光)。但这又会带来了一个新问题。无数原有的C++代码都依赖于使用了多年的伪标准库中的功能,他们都是在全局空间下的。所以就有了等等这样的头文件,一个是为了兼容以前的C++代码,一个是为了支持新的标准。命名空间std封装的是标准程序库的名称,标准程序库为了和以前的头文件区别,一般不加".h",也可以用 命名空间名::变量名 这种方法访问

iostream:

iostream头文件包含了我们经常用到的cin和cout语法

cin就是相当于scanf,用来从键盘获取数据的,cout相当于printf,是用来输出的

而endl相当于\n换行,不过也要配合cout使用例如:cout<

当然cout也是可以控制输出精度的例如cout<

在这里就不在深入了

algorithm:

该头文件中包含了我们经常使用的sort函数,reverse函数,max_element函数,min_element函数,lower_bound函数,upper_bound函数,find函数,binary_search,swap函数等等

这基本都是我们比较常见的函数了

 sort函数:

#include
using namespace std;
int main(){
  int a[]={6,5,4,3,2,1};
  sort(a,a+6);
  for(int i=0;i<6;i++){
  	cout<

reverse函数:

#include
using namespace std;
int main(){
  int a[]={6,5,4,3,2,1};
 reverse(a,a+6);
  for(int i=0;i<6;i++){
  	cout<

 max_element(a,a+n)和min_element(a,a+n)

         当然这里的a+n中的n是你所想要查询的范围,也就是说如要你要查询前四个数中最大值就直接max_element(a,a+4)就可以啦,当然你也可以查询1-4中最大值那就直接max_element(a+1,a+4)就可以啦,min_element函数也是一个道理

#include
using namespace std;
int main(){
  int a[]={16,54,4,30,28,1};
    cout<<*max_element(a,a+6)<

low_bound函数和upper函数 

详细用法

#include
using namespace std;
int main(){
  int a[]={16,54,4,30,28,1};
    sort(a,a+6);
     int t=lower_bound(a,a+6,16)-a;//注意这个函数要在有序的情况下使用哟 
     //其实lower_bound函数就是返回第一个大于等于你的目的数的地址
	 //目的数就是函数中的最后一个数,在这个例子中是16
	 //而upper_bound函数就是返回第一个大于目的数的地址,注意要减去地址a哦 
     cout<

swap函数 :

#include
using namespace std;

int main(){
	int a[]={1,2,3,4,5};
	swap(a[0],a[1]);
	for(int i=0;i<5;i++)
	cout<

 string和string.h:

注意哟string头文件就是#include哦,当然还有一个头文件是#include,注意不要弄混了哟

先讲string吧,它里面包括的我们经常使用的就是find()函数和replace()函数,substr()函数

find函数

这个是在字符串中的用法

#include
using namespace std;

int main(){
	string str="abcdefg";
	string ss="de";
	int n=str.find(ss);//这里输出3,是因为find函数
	//是在str字符串中找到第一个出现ss字符串中的第一个子母的下标 
	cout<

这个是在vector(后面讲)中的用法

#include
using namespace std;

int main(){
	vectorve;
  int a[]={1,2,3,4,5,6};
  for(int i=0;i<6;i++)
  ve.push_back(a[i]);
  int it;
  it=find(ve.begin(),ve.end(),3)-ve.begin();//这里ve.begin()是ve的起始地址
  //ve.end()是最后一个元素后面的地址,3在这里是你要查找的数
   
  cout<

repalce函数 

#include
using namespace std;

int main(){
	string str="abcdefg";
	string st="bcd";
    str.replace(str.find(st),3,"china");//replace一般配合find函数使用得到st第一个出现在str中的下标
	//也叫地址,3,是你想要替换的长度,“china”是你想要替换的字符串 
    cout<

substr函数 

#include
using namespace std;

int main(){
	string str="abcdefg";
   string st;
   st=str.substr(0,3);//0是起始地址,3是尾地址,不包括3 ,当然数据随便给,,
   //但是要保证起始大于尾地址,并且确保不溢出 
   cout<

这里继续讲解string.h头文件中常用的库函数 

strlen函数

#include
using namespace std;
int main(){
	char c[500],a[500],b[500];
	b[500]='i love China';
	cout<>c;//这里我输入i love China
	cout<

memset函数

#include
using namespace std;

int main(){
	int a[500];
/*1 for(int i=0;i<10;i++){
	cout<

 既然这里说了初始化函数,那么这里也将一下fill函数吧

fill函数 

#include
using namespace std;

int main(){
bool flag[500];
fill(flag,flag+50,false);
for(int i=0;i<10;i++)
if(flag[i]==false)cout<<"初始化成功"<<" "; //这里成功了
//一般memset函数应用于初始化数组为0,但是fill函数可以初始化成为任何值 
} 

strcmp函数

#include
using namespace std;

int main(){
char str[]="HNUCM";
char str1[]="HNUCm";
if(strcmp(str,str1)==0) cout<<"相等哟"<

ps:这几天比较忙更新可能比较少,见谅哈

你可能感兴趣的:(算法,c++,排序算法)