版权声明:原创文章,转载请注明出处 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;
}