#include <iostream>
#include <vector>
#include <algorithm>
using namespace std; // transform 将一个容器的元素 搬运 到另一个容器中
struct MyPlus
{
int operator()(int val)
{
return val + ;
}
}; void MyPrint(int val)
{
cout << val << " ";
} void test01()
{
vector<int> v1;
vector<int> v2;
for (int i = ; i < ; i++)
{
v1.push_back(i);
}
v2.resize(v1.size()); // 开辟空间
transform(v1.begin(), v1.end(), v2.begin(), MyPlus());
for_each(v2.begin(), v2.end(), MyPrint);
cout << endl;
cout << "--------------------" << endl;
} // 常用的查找算法
void test02()
{
vector<int> v1;
for (int i = ; i < ; i++)
{
v1.push_back(i);
}
vector<int>::iterator ret = find(v1.begin(), v1.end(), );
if (ret == v1.end())
{
cout << "没有找到!" << endl;
}
else
{
cout << "找到了:" << *ret << endl;
}
cout << "--------------------" << endl;
} class Person
{
public:
Person(int age, int id) : age(age), id(id){}
bool operator== (const Person& p)
{
return p.id == this->id && p.age == this->age;
}
public:
int id;
int age;
}; void test03()
{
vector<Person> v1;
Person p1(, ), p2(, );
v1.push_back(p1);
v1.push_back(p2);
vector<Person>::iterator ret = find(v1.begin(), v1.end(), p1);
if (ret == v1.end())
{
cout << "没有找到!" << endl;
}
else
{
cout << "找到了!" << endl;
}
cout << "--------------------" << endl;
} bool MySearch(int val)
{
return val > ;
} bool MySearch2(int val)
{
return val > ;
} void test04()
{
vector<int> v1;
for (int i = ; i < ; i++)
{
v1.push_back(i);
}
v1.push_back();
bool ret = binary_search(v1.begin(), v1.end(), );
if (ret)
{
cout << "找到了!" << endl;
}
else
{
cout << "没有找到!" << endl;
} vector<int>::iterator it = adjacent_find(v1.begin(), v1.end());
if (it != v1.end())
{
cout << "找到相邻重复元素:" << *it << endl;
}
else
{
cout << "没有找到相邻重复元素!" << endl;
} // find_f 会根据我们的条件(函数) ,返回第一个满足条件的元素的迭代器
it = find_if(v1.begin(), v1.end(), MySearch);
if (it != v1.end())
{
cout << "找到:" << *it << endl;
}
else
{
cout << "没有找到!" << endl;
} // count count_if
int num = count(v1.begin(), v1.end(), );
cout << "9出现的次数:" << num << endl;
num = count_if(v1.begin(), v1.end(), MySearch2);
cout << "大于5的个数:" << num << endl;
} int main()
{
test01();
test02();
test03();
test04();
getchar();
return ;
}

C++ STL 之 常用算法的更多相关文章

  1. STL中常用算法

    一.排序 sort sort(first_pointer,first_pointer+n,cmp) 默认为升序 若要使用降序,自行写cmp 函数 bool cmp(int a,int b){ retu ...

  2. STL——配接器、常用算法使用

    学习STL,必然会用到它里面的适配器和一些常用的算法.它们都是STL中的重要组成部分. 适配器 在STL里可以用一些容器适配得到适配器.例如其中的stack和queue就是由双端队列deque容器适配 ...

  3. [C++ STL] 常用算法总结

    1 概述 STL算法部分主要由头文件<algorithm>,<numeric>,<functional>组成.要使用 STL中的算法函数必须包含头文件<alg ...

  4. ACM常用算法及练习(2)

    ACM常用算法及练习 知识类型 重要度 容易度 应掌握度 典型题 其他           数据结构(5) 链表 ★★☆ ★★★ ★★☆     栈 stack ★★★ ★★★ ★★★ HLoj120 ...

  5. ACM常用算法及练习(1)

    ACM常用算法及练习 第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打出来. 1.最短 ...

  6. 总结Objective-c常用算法

          今天是星期天,想睡到10点起床,结果认为自己太奢侈了,不能这么做,于是把闹钟设置成了6:30:结果终于9:36醒了,起床,无缘无故迟了,好吧,就算太累了吧,周天就原谅自己一回.终于到了中午 ...

  7. Atitit 编程语言常用算法attilax总结

    Atitit 编程语言常用算法attilax总结 1. 编译算法分类and   数据操作算法.1 1.1. Tab driver stat  状态转换表格算法1 1.2. Nest case 词法分析 ...

  8. GJM : 数据结构 - 轻松看懂机器学习十大常用算法 [转载]

     转载请联系原文作者 需要获得授权,非法转载 原文作者将享受侵权诉讼 文/不会停的蜗牛(简书作者)原文链接:http://www.jianshu.com/p/55a67c12d3e9 通过本篇文章可以 ...

  9. C/C++常用算法【C语言顺序查找(随机数)】【1】

    这是我学习唐峻,李淳的<C/C++常用算法第一天> 1.8.1. 查找数字: 程序随机生成一个拥有20个整数数据的数组,然后输入要查找的数据.接着,可以采用醉简单的逐个对比的方法进行查找, ...

随机推荐

  1. LeetCode_38. Count and Say

    38. Count and Say Easy The count-and-say sequence is the sequence of integers with the first five te ...

  2. python 类型注解

    函数定义的弊端 python 是动态语言,变量随时可以被赋值,且能赋值为不同类型 python 不是静态编译型语言,变量类型是在运行器决定的 动态语言很灵活,但是这种特性也是弊端 def add(x, ...

  3. 【Leetcode_easy】783. Minimum Distance Between BST Nodes

    problem 783. Minimum Distance Between BST Nodes 参考 1. Leetcode_easy_783. Minimum Distance Between BS ...

  4. 接着上次的python爬虫,今天进阶一哈,局部解析爬取网页数据

    *解析网页数据的仓库 用Beatifulsoup基于lxml包lxml包基于html和xml的标记语言的解析包.可以去解析网页的内容,把我们想要的提取出来. 第一步.导入两个包,项目中必须包含beau ...

  5. Spring 使用jsp

    1.New----新建项目 2.选择图中所示按钮,下一步 3.标记处修改工程名,下一步 4选中图中所示选项 5.完成 6.在main目录下新建目录webapp 7.自动导入 8.调整项目结构 9.选择 ...

  6. 报错Unsupported major.minor version 52.0的原因

    原因分析 很明显是JDK版本不一致所导致的,,我们知道Java是支持向后编译的,也就是说,在低版本(如JDK6)上编译的class文件或者jar文件可以在高版本上(如JDK8)上编译通过,但这并不意味 ...

  7. Linux系统目录的学习

    1.在公司中linux 都是没有界面 2.系统路径    2.1 /表示根目录    2.2 ~表示/root    2.3etc:存放系统配置文件    2.4 home  除了root 以外所有用 ...

  8. PAT甲级 模拟题_C++题解

    模拟题 PAT (Advanced Level) Practice 模拟题 目录 1008 Elevator (20) 1042 Shuffling Machine (20) 1046 Shortes ...

  9. Winscp隧道实现-跳板机/跨机连接

    隧道用的是公网ip,登陆用的是私网ip 一张图应该就能看懂,后续用到新的功能继续编辑

  10. linux运维命令3

    1.grep 逐行搜索所指定的文件或标准输入,并显示匹配模式的每一行. grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C& ...