STL---基本算法---<stl_algobase.h>概述
通过一个实例来说明这些算法的接口使用:
#include <iostream>
#include <algorithm>
#include <functional>
#include <vector>
#include <cstring>
using namespace std;
template <class T>
struct display{
void operator()(const T& x)const{
cout<<x<<" ";
}
};
int main()
{
int ia[9]={0,1,2,3,4,5,6,7,8};
vector<int> iv1(ia,ia+5);
vector<int> iv2(ia,ia+9);
cout<<equal(iv1.begin(),iv1.end(),iv2.begin())<<endl;//1,true fill(iv1.begin(),iv1.end(),9);//区间全部填9
for_each(iv1.begin(),iv1.end(),display<int>());
cout<<endl; fill_n(iv1.begin(),3,7);
for_each(iv1.begin(),iv1.end(),display<int>());
cout<<endl; string s1[]={"jamie","jjHou","jason"};
string s2[]={"jamie","jjhou","jerry"};
cout<<lexicographical_compare(s1,s1+2,s2,s2+2)<<endl;
cout<<lexicographical_compare(s1,s1+2,s2,s2+2,greater<string>())<<endl;
//字典序对比,s1小于s2
return 0;
}
在看下面一些算法:
#include <iostream>
#include <algorithm>
#include <functional>
#include <vector>
#include <cstring>
#include <set>
#include <iterator>
using namespace std;
template <class T> //这是一个函数对象
struct display{
void operator()(const T& x)const{
cout<<x<<" ";
}
};
int main()
{
int ia[]={0,1,2,3,4,5,6,6,6,7,8};
vector<int> iv(ia,ia+sizeof(ia)/sizeof(int));
cout<<count(iv.begin(),iv.end(),6)<<endl;//找出元素值为6的个数
cout<<count_if(iv.begin(),iv.end(),bind2nd(less<int>(),7))<<endl;
cout<<*find_if(iv.begin(),iv.end(),bind2nd(greater<int>(),2))<<endl;
for_each(iv.begin(),iv.end(),display<int>());
cout<<endl;
reverse(iv.begin(),iv.end()); //逆序重排
for_each(iv.begin(),iv.end(),display<int>());//输出每一个元素
cout<<endl;
int ia2[]={0,1,2};
vector<int> iv2(ia2,ia2+3);
vector<int>::iterator ite=find_first_of(iv.begin(),iv.end(),iv2.begin(),iv2.end());
//在第一个区间序列中查找第二序列中任意元素第一次出现的位置,返回该位置的迭代器
while(ite!=iv.end())
{
cout<<*ite<<" ";
ite++;
}
return 0;
}
STL---基本算法---<stl_algobase.h>概述的更多相关文章
- STL源代码剖析——基本算法stl_algobase.h
前言 在STL中.算法是常常被使用的,算法在整个STL中起到很关键的数据.本节介绍的是一些基本算法,包括equal.fill.fill_n,iter_swap.lexicographical_comp ...
- STL源代码剖析——STL算法stl_algo.h
前言 在前面的博文中剖析了STL的数值算法.基本算法和set集合算法.本文剖析STL其它的算法,比如排序算法.合并算法.查找算法等等.在剖析的时候.会针对函数给出一些样例说明函数的使用.源代码出自SG ...
- stl_algobase.h
stl_algobase.h // Filename: stl_algobase.h // Comment By: 凝霜 // E-mail: mdl2009@vip.qq.com // Blog: ...
- [C++ STL] 常用算法总结
1 概述 STL算法部分主要由头文件<algorithm>,<numeric>,<functional>组成.要使用 STL中的算法函数必须包含头文件<alg ...
- C++复习:STL之算法
算法 1算法基础 1.1算法概述 算法部分主要由头文件<algorithm>,<numeric>和<functional>组成. <algorithm> ...
- 初探STL之算法
算法 STL算法部分主要由头文件<algorithm>,<numeric>,<functional>组成.要使用 STL中的算法函数必须包括头文件<algor ...
- 常用的STL查找算法
常用的STL查找算法 <effective STL>中有句忠告,尽量用算法替代手写循环:查找少不了循环遍历,在这里总结下常用的STL查找算法: 查找有三种,即点线面: 点就是查找目标为单个 ...
- 【STL】帮你复习STL泛型算法 一
STL泛型算法 #include <iostream> #include <vector> #include <algorithm> #include <it ...
- STL基础--算法(排序)
STL排序算法 排序算法要求随机访问迭代器 vector, deque, container array, native array 例子 vector<int> vec = {9,1,1 ...
随机推荐
- C语言库函数大全及应用实例十一
原文:C语言库函数大全及应用实例十一 [编程资料]C语言库函数大全及应用实例十一 函数名: setbkcolor 功 能 ...
- [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)
原文:[顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功) [顶]ORACLE PL/SQL编程详解之二: PL/SQL块结构和组成元素(为山九仞,岂一日 ...
- [Nhibernate]二级缓存
[Nhibernate]二级缓存 目录 写在前面 文档与系列文章 二级缓存 Nhibernate二级缓存提供程序 一个例子 总结 写在前面 上篇文章介绍了nhibernate中一级缓存的相关内容,一级 ...
- 组件接口(API)设计指南[5]-最后的思考
*阅读其它章节: http://blog.csdn.net/cuibo1123/article/details/39894477 最后的思考 我通过困难的学习以及多年的失误.写了这片篇关于创建组件和a ...
- 关于Java String对象创建的几点疑问
我们通过JDK源码会知道String实质是字符数组,而且是不可被继承(final)和具有不可变性(immutable).可以如果想要了解String的创建我们需要先了解下JVM的内存结构. 1.JVM ...
- [译]ava 设计模式之构造器
(文章翻译自Java Design Pattern: Builder) 构造器模式的关键之处在于它使用一步接招一步的流程去构建东西,例如:尽管构建的每一步是不相同的但是每一个产品还是遵循相同的流程. ...
- 如何使ActionBar不那么单调
此时我没有生产博客,此时我只是优秀博客的搬运工! 博客原址,有兴趣的可以查看一下. 详情如下: 使ActionBar不那么单调 回到2013年5月份,每一个人都发觉了Play Music中Action ...
- 创建一个js日历(原生JS实现日历)
前言 方法是有参考网上一些资料的,比如闰年的判断,比如每个月第一天是星期几的判断.不说太多,拆分出一个个函数,希望能描述尽可能的清晰明了. 一,判断闰年 //判断闰年 function runNian ...
- Hive中抽取连续多天登录用户
昨天群上有人发个阿里的面试题,题目描述大概如下: 数据源:用户登录表,只有俩个字段,uid和dt 试用HQL抽取出连续登录了K天的用户uid 第一个想法就是直接用一个UDF解决,按uid分组,把dt收 ...
- CloudFormation
亚马逊云服务之CloudFormation 亚马逊的Web Service其实包含了一套云服务.云服务主要分为三种: IaaS: Infrastructure as a service,基础设施即 ...