其实algorithm里面的算法很多都类似的,参数基本都是一对迭代器或指针,和一个额外的参数。
如:find函数
#include<iostream>
#include<string>
#include<list>
#include<algorithm>
using namespace std;
int main(){
int a[]={1,2,3,4,5,6,7,8};
list<int>l(a,a+8);
list<int>::iterator iter=find(l.begin(),l.end(),5);
if(iter!=l.end()){
cout<<"I have found it"<<endl;
}else{
cout<<"I can't find it"<<endl;
}
system("pause");
return 0;
}
又如count函数,
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
int main(){
int a;
vector<int>v;
cout<<"please input some ints"<<endl;
while(cin>>a){
v.push_back(a);
}
cout<<"then input the data which you want to count:"<<endl;
int tongji;
int geshu;
cin.clear();
cin>>tongji;
geshu=count(v.begin(),v.end(),tongji);
cout<<"total number:"<<geshu<<endl;
system("pause");
return 0;
}
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<numeric>
using namespace std;
int main(){
int a[]={1,2,3,4,5,6,7,8,9,10};
vector<int>v(a,a+10);
int sum=accumulate(v.begin(),v.end(),0);
cout<<"accumulate(v.begin(),v.end(),0)="<<sum<<endl;
system("pause");
return 0;
}
#include<iostream>
#include<string>
#include<vector>
#include<numeric>
using namespace std;
int main(){
string s[]={"hello"," my","name","is"," X"," X"," X"," X","Z","Z"};
vector<string>v(s,s+sizeof(s)/sizeof(*s));
string sum=accumulate(v.begin(),v.end(),string(""));
cout<<sum<<endl;
system("pause");
return 0;
}
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
string s1[]={"1","2","3","4","5","6","7","8"};
string s2[]={"a","b","c","d","e","f","g","1","2","3"};
vector<string>v1(s1,s1+8);
vector<string>v2(s2,s2+10);
vector<string>::iterator it=v1.begin();
int cnt=0;
while((it=find_first_of(it,v1.end(),v2.begin(),v2.end()))!=v1.end()){
++cnt;
++it;
}
cout<<"found "<<cnt<<" names on both v"<<endl;
system("pause");
return 0;
}
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
bool isShorter(const string &s1,const string &s2){
return s1.size()<s2.size();
}
bool GT6(const string &s){
return s.size()>=6;
}
int main(){
string word;
vector<string>v;
while(cin>>word){
v.push_back(word);
}
for(vector<string>::iterator iter=v.begin();iter!=v.end();++iter){
cout<<*iter<<" ";
}
cout<<endl;
sort(v.begin(),v.end());//排序
vector<string>::iterator uni=unique(v.begin(),v.end());//返回一个迭代器,迭代器之前是唯一的,
v.erase(uni,v.end());
stable_sort(v.begin(),v.end(),isShorter);
/*for(vector<string>::iterator iter1=v.begin();iter1!=v.end();++iter1){
cout<<*iter1<<" ";
}*/
vector<string>::size_type wc=count_if(v.begin(),v.end(),GT6);
cout<<wc<<"个"<<endl;
cout<<endl;
system("pause");
return 0;
}
根据count_if可以写出find_if
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
bool isShorter(const string &s1,const string &s2){
return s1.size()<s2.size();
}
bool GT6(const string &s){
return s.size()>=6;
}
int main(){
string s;
vector<string>v;
while(cin>>s){
v.push_back(s);
}
sort(v.begin(),v.end());
vector<string>::iterator uni=unique(v.begin(),v.end());
v.erase(uni,v.end());
stable_sort(v.begin(),v.end(),isShorter);
vector<string>::iterator flag=v.begin();
while((flag=find_if(flag,v.end(),GT6))!=v.end()){
cout<<*flag<<endl;
++flag;
}
cout<<endl;
system("pause");
return 0;
}
#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;
int main(){
int a[]={1,2,3,4,5,6,7,8,9,10};
vector<int>v1(a,a+10);
vector<int>v2;
v2.resize(10);
copy(v1.begin(),v1.end(),v2.begin());
for(vector<int>::iterator iter=v2.begin();iter!=v2.end();++iter){
cout<<*iter<<" ";
}
cout<<endl;
system("pause");
return 0;
}
然而list已经自己定义好了,看,对比一下,多简单
#include<iostream>
#include<list>
#include<string>
using namespace std;
int main(){
string word;
list<string>lst;
while(cin>>word){
lst.push_back(word);
}
cout<<"什么事都没做"<<endl;
for(list<string>::iterator iter=lst.begin();iter!=lst.end();++iter){
cout<<*iter<<" ";
}
cout<<endl;
lst.sort();
cout<<"调用排序"<<endl;
for(list<string>::iterator aiter=lst.begin();aiter!=lst.end();++aiter){
cout<<*aiter<<" ";
}
cout<<endl;
lst.unique();
cout<<"调用唯一"<<endl;
for(list<string>::iterator witer=lst.begin();witer!=lst.end();++witer){
cout<<*witer<<" ";
}
cout<<endl;
system("pause");
return 0;
}
所以algorithm不用死记,掌握它是如何设计算法的。
分享到:
相关推荐
算法分析算法分析算法分析算法分析算法分析算法分析算法分析
2019亚马逊A9 Algorithm算法高级SEO策略详解.pdf2019亚马逊A9 Algorithm算法高级SEO策略详解.pdf2019亚马逊A9 Algorithm算法高级SEO策略详解.pdf2019亚马逊A9 Algorithm算法高级SEO策略详解.pdf2019亚马逊A9 ...
2019亚马逊A9 Algorithm算法高级SEO策略详解.docx2019亚马逊A9 Algorithm算法高级SEO策略详解.docx2019亚马逊A9 Algorithm算法高级SEO策略详解.docx2019亚马逊A9 Algorithm算法高级SEO策略详解.docx2019亚马逊A9 ...
Dijkstra’s Algorithm 最短路径树算法,作为基本的启发式寻路方式,属于贪婪算法。在求解NPhard问题时,也仍存在其局限性
mp3 algorithm 算法详细解析
Algorithm 算法第四版官方 jar 包, Algorithm 算法第四版官方 jar 包
算法概论(Algorithm) .
本课件是我们上课用的课件,现在分享出来适合初学者,大家依情况下载,祝大家学习愉快!
algorithm.sty (1)增加标题标题top并居中选项 (2)增加中文标题:“算法”,并根据条件编译选择中文标题或英文标题 algorithmic.sty (1)增加命令\INITIAL,即初始化项
随机算法 randomized algorithm
分享了科莫多巨蜥算法Komodo Mlipir Algorithm源代码及其原文,更多算法可进入空间查看
算法导论 Introduction to Algorithm
Algorithm Visualizer,算法可视化。在线Demo: http://parkjs814.github.io/AlgorithmVisualizer算法目录层次结构 Path 描述/algorithm/category.json 此文件包含类别及其算法的列表。/algorithm/[category]/...
Algorithm2e is an environment for writing algorithms in LATEX2e. An algorithm is defined as a floating object like figures. It provides macros that allow you to create different sorts of key words, ...
分享了Pelican Optimization Algorithm鹈鹕优化算法源代码及其原文,更多算法可进入空间查看
算法 Algorithm
Java麻将算法汇总(胡牌算法、AI算法、查胡算法、评估算法、出牌算法)majiang_algorithm-master.zip
知识图谱推理方向的基础算法Path Ranking Algorithm详解
Algorithm Visualizer:算法可视化
Introdution to algorithm(算法导论) 最经典版本