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 ...
随机推荐
- java中Integer包装类的具体解说(java二进制操作,全部进制转换)
程序猿都非常懒,你懂的! 今天为大家分享的是Integer这个包装类.在现实开发中,我们往往须要操作Integer,或者各种进制的转换等等.我今天就为大家具体解说一下Integer的使用吧.看代码: ...
- angular实例
angular实例教程(用来熟悉指令和过滤器的编写) angular的插件太少了, 所以很多指令和过滤器都要自己写, 所以对指令传进来的参数, 以及angular编译的流程更加熟悉才行写出好的插件 ...
- changePage() 页面跳转
jQuery.mobile.changePage( to [, options ] ) 从一个页面跳转到另一个页面,使用$.mobile对象的changePage方法来实现.但要使用此方式的时候,要以 ...
- bootstrap基本标签总结2
[布局]bootstrap基本标签总结2 缩略图 <div class="container"> <div class="row"> ...
- 分布式消息系统kafka
kafka:一个分布式消息系统 1.背景 最近因为工作需要,调研了追求高吞吐的轻量级消息系统Kafka,打算替换掉线上运行的ActiveMQ,主要是因为明年的预算日流量有十亿,而ActiveMQ的分布 ...
- 自动编译CoffeeScript的Gruntfile.js
比如把coffee文件写在coffee/controller/文件夹下,新建js/controller文件夹,使用grunt运行项目,将自动编译coffee到相应的js文件夹下. module.exp ...
- SUI Mobile框架开发,android、ios表单遇到的问题
1.页面添加区域滚动,滚动区域内元素事件无效问题 解决方法: <script type="text/javascript" charset="utf-8" ...
- bat批量目光声明
写bat同一批次,盯着函数应使用.这个程序对可读性 在批处理,凝视节还有一种更常用的方法: goto start = 能够是多行文本,能够是命令 = 能够包括重定向符号和其它特殊字 ...
- Value Object(值对象)如何使用 EF 进行正确映射
DDD 领域驱动设计-Value Object(值对象)如何使用 EF 进行正确映射 写在前面 首先,这篇博文是用博客园新发布的 MarkDown编辑器 编写的,这也是我第一次使用,语法也不是很熟悉, ...
- Bootstrap 模态框
Bootstrap 模态框(也可以说的弹出层) 最近在尝试使用bootstrap的模态框 使用模态框主要要引入一下几个js和css: bootstrap.css jquery.1.9.1.js(这个可 ...