C++ STL 之 常用算法
#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 之 常用算法的更多相关文章
- STL中常用算法
一.排序 sort sort(first_pointer,first_pointer+n,cmp) 默认为升序 若要使用降序,自行写cmp 函数 bool cmp(int a,int b){ retu ...
- STL——配接器、常用算法使用
学习STL,必然会用到它里面的适配器和一些常用的算法.它们都是STL中的重要组成部分. 适配器 在STL里可以用一些容器适配得到适配器.例如其中的stack和queue就是由双端队列deque容器适配 ...
- [C++ STL] 常用算法总结
1 概述 STL算法部分主要由头文件<algorithm>,<numeric>,<functional>组成.要使用 STL中的算法函数必须包含头文件<alg ...
- ACM常用算法及练习(2)
ACM常用算法及练习 知识类型 重要度 容易度 应掌握度 典型题 其他 数据结构(5) 链表 ★★☆ ★★★ ★★☆ 栈 stack ★★★ ★★★ ★★★ HLoj120 ...
- ACM常用算法及练习(1)
ACM常用算法及练习 第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打出来. 1.最短 ...
- 总结Objective-c常用算法
今天是星期天,想睡到10点起床,结果认为自己太奢侈了,不能这么做,于是把闹钟设置成了6:30:结果终于9:36醒了,起床,无缘无故迟了,好吧,就算太累了吧,周天就原谅自己一回.终于到了中午 ...
- Atitit 编程语言常用算法attilax总结
Atitit 编程语言常用算法attilax总结 1. 编译算法分类and 数据操作算法.1 1.1. Tab driver stat 状态转换表格算法1 1.2. Nest case 词法分析 ...
- GJM : 数据结构 - 轻松看懂机器学习十大常用算法 [转载]
转载请联系原文作者 需要获得授权,非法转载 原文作者将享受侵权诉讼 文/不会停的蜗牛(简书作者)原文链接:http://www.jianshu.com/p/55a67c12d3e9 通过本篇文章可以 ...
- C/C++常用算法【C语言顺序查找(随机数)】【1】
这是我学习唐峻,李淳的<C/C++常用算法第一天> 1.8.1. 查找数字: 程序随机生成一个拥有20个整数数据的数组,然后输入要查找的数据.接着,可以采用醉简单的逐个对比的方法进行查找, ...
随机推荐
- python定义接口继承类
zxq547 python定义接口继承类invalid syntax解决办法 1 2 3 4 5 6 7 class s_all(metaclass=abc.ABCMeta): #python ...
- delete 删除指针
危险的代码: int* p=new int(1); delete p; delete p; 安全的代码: int* p=new int(1); delete p; p = NULL; ...
- 阶段5 3.微服务项目【学成在线】_day18 用户授权_01-用户授权业务流程分析
1 用户授权业务流程 用户授权的业务流程如下: 业务流程说明如下: 1.用户认证通过,认证服务向浏览器cookie写入token( 身份令牌) 2.前端携带token请求用户中心服务获取jwt令牌 前 ...
- web框架之MVC/MTV
MVC框架 MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式 Model(模型)表示应用程序核心(比如数据库记录列表) Vi ...
- djando模板----第一django模板应用
Django模板 我们已经知道,模板函数的函数的返回值就是返回给客户端的数据,但如果返回数据很复杂,如果一个非常大的html页面,直接将页面代码固化在python脚本文件中是不合适的,当然 也可以将h ...
- Java使用Apache Commons Net实现FTP功能
maven依赖: <!-- https://mvnrepository.com/artifact/commons-net/commons-net --> <dependency> ...
- jQuery BlockUI Plugin Demo 2
Overview The jQuery BlockUI Plugin lets you simulate synchronous behavior when using AJAX, without l ...
- iOS-MPMoviePlayerViewController使用
其实MPMoviePlayerController如果不作为嵌入视频来播放(例如在新闻中嵌入一个视频),通常在播放时都是占满一个屏幕的,特别是在 iPhone.iTouch上.因此从iOS3.2以后苹 ...
- vue路由传参的三种方式
方式一 通过query方式传参 这种情况下 query传递的参数会显示在url后面 this.$router.push({ path: '/detail', query: { id: id } }) ...
- mysql 1366错误