C++实用函数

字符串的查找:

#include<bits/stdc++.h>
using namespace std;
int main() {
	string a;///////////////定义成字符串
	string b;///////////// 定义成字符串
	cin>>a>>b;/////////////输入字符串A与B
	int len=a.size();/////A的长度a.length()==a.size()
	cout<<len<<endl;/////输出长度并换行
	int s=a.find(b);////查找字符串B在A中出现的首位置,
	cout<<s;////////////如没有返回值为-1
}
int main() { ////////////同样的效果
	char a[10]="asdfg",b[10];
	scanf("%s",b);
	char *f=strstr(a,b);
	if(f!=NULL)
		printf("%d",int(f-a));//返回首位值 
	else
		printf("-1");
}

字符串的替换:

replace函数包含于头文件#include<string.h>中。

用法一:

#include<iostream>
#include<string>
using namespace std;
int main()
{
	string a = "hello world !!!!";
	a=a.replace(a.find("e"),1,"aa");
	cout<<a<<endl; 
	return 0;
}

输出为:

haallo woreld !!!!

它只替换第一次出现的字符。

用法二:

#include<iostream>
#include<string>
using namespace std;
int main()
{
	string a = "Hello World !!!";
	 a=a.replace(a.begin()+1,a.begin()+2,"#"); 
	 cout<<a<<endl;
	 return 0; 
}

输出为:

H#llo World !!!

用#替换从begin位置开始的1个字符

substr 截取

#include<string.h >

int main() {
string a="abcdefg";
string b;
cout<<a.substr(2)<<endl;//从下表2开始后所有。。
cout<<a.substr(2,3)<<endl;//从下表2开始后面3位;
b=a.substr(2);
cout<<b;	
}

进制转换

下面属于非库标准

#include<stdio.h>
#include<stdlib.h>

int main(){
	int i,n,t;
	char a[200],b[200];
	scanf("%d\n",&t);
	while(t--){
		scanf("%s",a);
		char *s;
		long long ans=strtol(a,&s,36);//->10
		itoa(ans,b,3);//10->
		puts(b);
	}
	
}

位运算

int lowbit(int n){
	return n&-n;
}

返回值为n二进制倒数最后一个一代表的十进制数。
例如 30 二进制为 11110 则会返回2
因为 11110——>10——>2.

在这里插入图片描述

去重函数unique

使用时必须先排序

#include<bits/stdc++.h>
using namespace std;

int main(void)
{
    int n,a[1010],t;
    cin>>n;
    for(int i=0;i<n;i++)
        cin>>a[i];

    sort(a,a+n);
     t=unique(a,a+n)-a;
     for(int i=0;i<t;i++)
        cout<<a[i]<<" ";
}

reverse 颠倒

#include<bits/stdc++.h>

using namespace std;
int main(){
	string s="asdfgh";
	reverse(s.begin()+1,s.end()-1);//开始-->结束
	cout<<s;
}

insert 插入

erase 删除

append 接

replace 替换

#include<bits/stdc++.h>

using namespace std;
int main() {
	int len=0;
	string a,b;
	getline(cin,a);
	a.insert(3, "asd");// 3 位置插入字符串  
	cout<<a<<endl;
	a.erase(3, 3);//删除从 3 开始的 3 个字符。
	cout<<a<<endl;
	a.append("asde", 1, 3);//将字符串 s 中,从 1 开始的 3 个字符连接到当前字符串结尾。
	cout<<a<<endl;
	a.replace(1, 3, "asdf");// 删除从 1开始的 3 个字符,然后在 1 处插入串 s。
	cout<<a<<endl;
}

vector

	vector<int>a;
	cout<<count(a.begin(),a.end(),k);//a中k出现的次数//线性时间
vector<int>a;
	bool cmp(double a) {
		return a<60;
	}//a中有多少个小于60的数
	cout<<count_if(a.begin(),a.end(),cmp);
	vector<int>a;//a中所有数的总和加上k
	cout<<accumulate(a.begin(),a.end(),k);

is_sorted()

for(int i=0;i<n;i++)cin>>a[i];
	if(is_sorted(a,a+n))cout<<"YES\n";//如果升序返回1 相等也返回1

partial_sort()

for(int i=0;i<n;i++)cin>>a[i];
	partial_sort(a,a+x,a+n);// 把最小的x个数 放前面 并只排这x个数
	for(int i=0;i<n;i++)cout<<a[i]<<" ";

还有好多,学了在补。
在这里插入图片描述

在这里插入图片描述

uu

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值