遍历算法
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <list>
#include <set>
#include <algorithm>
#include <functional>
#include <string>
#include <iterator>
using namespace std;
void printV(vector<int> &v)
{
for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
{
cout << *it << " ";
}
}
void printList(list<int> &l)
{
for (list<int>::iterator it = l.begin(); it != l.end(); it++)
{
cout << *it << " ";
}
}
void showElem(int &n)
{
cout << n << " ";
}
class CMyShow
{
public:
CMyShow()
{
num = 0;
}
void operator()(int &n)
{
num++;
cout << n << " ";
}
void printNum()
{
cout << "num : " << num << endl;
}
private:
int num;
};
void main1_foreach_transform()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(5);
printV(v1);
for_each(v1.begin(), v1.end(), showElem);
cout << endl;
for_each(v1.begin(), v1.end(), CMyShow());
cout << endl;
CMyShow mya;
CMyShow my1 = for_each(v1.begin(), v1.end(), mya);
mya.printNum();
my1.printNum();
my1 = for_each(v1.begin(), v1.end(), mya);
my1.printNum();
cout << endl;
}
int increase(int i)
{
return i + 100;
}
void main1_transform()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(5);
printV(v1);
cout << endl;
transform(v1.begin(), v1.end(), v1.begin(), increase);
printV(v1);
cout << endl;
transform(v1.begin(), v1.end(), v1.begin(), negate<int>());
printV(v1);
cout << endl;
list<int> mylist;
mylist.resize(v1.size());
transform(v1.begin(), v1.end(), mylist.begin(), bind2nd(multiplies<int>(), 10));
printList(mylist);
cout << endl;
transform(v1.begin(), v1.end(), ostream_iterator<int>(cout, " "), negate<int>());
}
int main()
{
main1_transform();
system("pause");
return 0;
}
查找算法
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <list>
#include <set>
#include <algorithm>
#include <functional>
#include <string>
#include <iterator>
using namespace std;
int main_adjacent_find()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(2);
v1.push_back(2);
v1.push_back(3);
v1.push_back(5);
vector<int>::iterator it = adjacent_find(v1.begin(), v1.end());
if (it == v1.end())
{
cout << "没有找到重复的元素" << endl;
}
else
{
cout << *it << endl;
}
int index = distance(v1.begin(), it);
cout << index << endl;
return 0;
}
void main_binary_search()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(5);
v1.push_back(7);
v1.push_back(9);
bool isFind = binary_search(v1.begin(), v1.end(), 7);
if (isFind == true)
{
cout << "找到了" << endl;
}
else
{
cout << "没有找到" << endl;
}
}
void main_count()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(5);
v1.push_back(7);
v1.push_back(7);
v1.push_back(9);
v1.push_back(7);
int num = count(v1.begin(), v1.end(), 7);
cout << num << endl;
}
bool GreatThree(int iNum)
{
if (iNum > 3)
{
return true;
}
return false;
}
void main_count_if()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(5);
v1.push_back(7);
v1.push_back(7);
v1.push_back(9);
v1.push_back(7);
int num = count_if(v1.begin(), v1.end(), GreatThree);
cout << num << endl;
}
void main_find()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(5);
v1.push_back(7);
v1.push_back(7);
v1.push_back(9);
v1.push_back(7);
vector<int>::iterator it = find(v1.begin(), v1.end(), 5);
cout << "*it : " << *it << endl;
}
void main_find_if()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(9);
v1.push_back(7);
v1.push_back(7);
v1.push_back(2);
v1.push_back(7);
vector<int>::iterator it = find_if(v1.begin(), v1.end(), GreatThree);
cout << "*it " << *it << endl;
}
int main()
{
main_find_if();
system("pause");
return 0;
}