算法笔记6.9 algorithm头文件下常用函数

版权声明:原创文章,转载请注明出处 https://blog.csdn.net/hza419763578/article/details/88245144

1.find(begin,end,n)

从指针范围[begin,end)内查找n,若n存在返回n的地址,否则返回地址end.无法返回下标,可用于普通数组,用于vector时功能强大

样例:

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main(){
	int num[5]={1,5,6,8,9};
	//找到返回地址
	cout<<find(num,num+5,9)<<endl;//返回6号元素的地址
	cout<<*find(num,num+5,9)<<endl;

	//没找到返回最后一个地址的下一个地址
	cout<<find(num,num+5,10)<<endl;//返回6号元素的地址
	
	/********************在vector里极其好用********************/
	vector<int> vi;
	for(int i=1;i<=5;i++){
		vi.push_back(i);
	}
	cout<<"vector中有:";
	for(int i=0;i<vi.size();i++) cout<<vi[i]<<" ";
	cout<<endl;
	int n;
	vector<int>::iterator it;
	while(cin>>n){
		it=find(vi.begin(),vi.end(),n);//[vi.begin(),vi.end())内找n
		if(it!=vi.end()){
			cout<<"找到"<<*it<<endl;
		}else{
			cout<<"未找到"<<endl;
		}
	}


	return 0;
}

2.求集合交并差

set_union(s1.begin(),s1.end(),s2.begin(),s2.end(),back_inserter(c));//并 

set_intersection(s1.begin(),s1.end(),s2.begin(),s2.end(),back_inserter(c));//交

set_difference(s1.begin(),s1.end(),s2.begin(),s2.end(),back_inserter(c));//差   s1-s2

结果都在vector  c里面

set集合自带强大API

求集合交并补

#include<iostream>
#include<set>
#include<vector>
using namespace std;
int main(){
	set<int> a,b;
	vector<int> c;
	a.insert(2);a.insert(4);a.insert(6);//2 4 6
	b.insert(1);b.insert(2);b.insert(3);b.insert(4);b.insert(5);//1 2 3 4 5
	cout<<"a:2 4 6\nb:1 2 3 4 5\n";

	//a,b不一定是set,但一定有序
	set_union(a.begin(),a.end(),b.begin(),b.end(),back_inserter(c));//并集
	cout<<"a并b:";
	for(int i=0;i<c.size();i++) cout<<c[i]<<" ";puts("");
	c.clear();

	//交集
	set_intersection(a.begin(),a.end(),b.begin(),b.end(),back_inserter(c));
	cout<<"a交b:";
	for(int i=0;i<c.size();i++) cout<<c[i]<<" ";puts("");
	c.clear();

	set_difference(a.begin(),a.end(),b.begin(),b.end(),back_inserter(c));
	cout<<"a差b:";
	for(int i=0;i<c.size();i++) cout<<c[i]<<" ";puts("");
	c.clear();

	puts("");
	return 0;
}

3.swap  不需要algorithm头文件 c++ std标准空间中就有

string都可以交换

#include<iostream>
using namespace std;
int main(){
	int a=1,b=2;
	swap(a,b);
	cout<<a<<" "<<b<<endl;
	
	char c[3]={'x','y','\0'};
	swap(c[0],c[1]);
	cout<<c<<endl;
	
	string s1="123",s2="abc";
	swap(s1,s2);
	cout<<s1<<" "<<s2<<endl;
	 
	return 0;
}

猜你喜欢

转载自blog.csdn.net/hza419763578/article/details/88245144