算法是STL的中枢,STL提供了算法库,算法库都是模板函数,主要分为四类,非修正序列算法、修正序列算法、排序算法和数值算法。本文介绍非修正序列算法。
adjacent_find(start,end)
这个函数是用来查找相邻的重复元素的,内部有两个参数,代表查找区间。
void test()
{
multiset<int>s;
s.insert(1);
s.insert(3);
s.insert(2);
s.insert(4);
s.insert(4);
printSet(s);
multiset<int>::iterator it = s.begin();
cout << "查找相邻的重复数对:" << endl;
it = adjacent_find(s.begin(),s.end()); //返回到迭代器
cout << *it++ << endl;
cout << *it << endl;
}
count(start,end,i)
表示计数,在区间start和end之间查找i的个数
int num = count(s.begin(), s.end(), 4);
cout << "查找的元素个数是:" << num << endl;
equal(start,end,start2)
判断区间是否相等。
bool num1 = equal(s.begin(), s.end(), ++s.begin());
cout << num1 << endl;
for_each(start,end,func)
从区间中的各个元素执行func函数
void outPut(int val)
{
cout << val <<" ";
}
..
for_each(++s.begin(),s.end(),outPut);
mismatch(start,end,start2)
找出区间之间不一样的元素
pair<multiset<int>::iterator, multiset<int>::iterator>pr;
pr = mismatch(s.begin(), s.end(), ++s.begin());
cout << "第一个不吻合点:" << *pr.first << " ";
cout << "和" << *pr.second << endl;
常用的算法介绍结束,刚刚的全部测试代码如下,希望可以帮助大家:
#include<iostream>
using namespace std;
#include<set>
#include<algorithm>
void printSet(multiset<int>& s)
{
for (multiset<int>::iterator it = s.begin(); it != s.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
void outPut(int val)
{
cout << val <<" ";
}
void test()
{
multiset<int>s;
s.insert(1);
s.insert(3);
s.insert(2);
s.insert(4);
s.insert(4);
printSet(s);
multiset<int>::iterator it = s.begin();
cout << "查找相邻的重复数对:" << endl;
it = adjacent_find(s.begin(),s.end());
cout << *it++ << endl;
cout << *it << endl;
int num = count(s.begin(), s.end(), 4);
cout << "查找的元素个数是:" << num << endl;
bool num1 = equal(s.begin(), s.end(), ++s.begin());
cout << num1 << endl;
for_each(++s.begin(),s.end(),outPut);
pair<multiset<int>::iterator, multiset<int>::iterator>pr;
pr = mismatch(s.begin(), s.end(), ++s.begin());
cout << "第一个不吻合点:" << *pr.first << " ";
cout << "和" << *pr.second << endl;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)