博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第5章 C++STL泛化技术分析
阅读量:5281 次
发布时间:2019-06-14

本文共 3210 字,大约阅读时间需要 10 分钟。

 

 

 

 

 

/*第5章 C++STL泛化技术分析   5.1 算法和迭代器   5.2 内存分配器和容器   5.3 概念   5.4 本章小结第5章 C++STL泛化技术分析   5.1 算法和迭代器   5.1.1 算法   5.1.2 迭代器   5.1.3 函数对象   5.1.4 适配器   5.2 内存分配器和容器   5.2.1 内存分配器   5.2.2 容器   5.3 概念   5.3.1 基础性概念   5.3.2 容器概念   5.3.3 迭代器概念   5.3.4 函数对象概念   5.4 本章小结*///第5章 C++STL泛化技术分析//   5.1 算法和迭代器 ---------------------------------------------------------------------------------------------//61#include 
#include
int main(void){ using namespace std; double a[8] = { 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 }; //8个元素的数组 double val = 3.0; double *result = find(a, a + 8, val); //等价于find(&a[0],&a[7]+1,val) if(result == a + 8) cout << "数组没有一个元素的值等于" << val << endl; else cout << "数组有一个元素值等于" << val << endl; return 0;}//66#include
#include
using namespace std;struct print{ void operator()(int x) { cout << x << ' '; }};int main(){ int a[] = {
68, 1, 17, 6, 3, 31, 6, 5, 30}; const int length = sizeof(a) / sizeof(int); //对每个数组元素进行打印 for_each(a, a + length, print()); cout << endl; return 0;}// 70 ,与书中代码有所不同,改过了。#include
#include
#include
int main(void){ using namespace std; vector < int > v; v.push_back(3); v.push_back(6); v.push_back(9); vector
::reverse_iterator rfirst(v.end()); vector
::reverse_iterator rend(v.begin()); while(rfirst != rend) { cout << *rfirst << ' '; ++rfirst; } return 0;}//73/*前面说书不代码不对,可能说错了。bind可以绑定第一个参数,也可以绑定第二个参数再来解读bind。bool greater(T&x, T&y){return x>y;}bind1st,是将常数值,绑定给greater的第一个参数,那么第二个参数就是*it,即引用的容器中的值。以下程序,将常数7,绑定给greater的第一个参数x,那么return的是:7>(*it)那么容器中的小于7的数,将被首先找到。将常数绑定到第一个参数,程序不容易阅读。所以bind2nd要比bind1st常用得多。*/#include
#include
#include
//find_if算法#include
int main(void){ using namespace std; vector < int > v; v.push_back(20); v.push_back(13); v.push_back(6); v.push_back(3); v.push_back(29); vector < int > ::iterator less7_iter; less7_iter = find_if(v.begin(), v.end(), bind1st(greater < int > (), 7)); cout << *less7_iter << endl; //将打印数字6 return 0;}// my test/*直接用bind2nd,找小于7的数,要直观得多。绑定,是将常数值,绑定给greater等二元函数对象的第一,或第二个参数。如非特殊,绑定给第二个参数吧。*/#include
#include
#include
//find_if算法#include
int main(void){ using namespace std; vector < int > v; v.push_back(20); v.push_back(13); v.push_back(6); v.push_back(3); v.push_back(29); vector < int > ::iterator less7_iter; less7_iter = find_if(v.begin(), v.end(), bind2nd(less
(),7)); cout << *less7_iter << endl; //将打印数字6 return 0;}//74。当然,不用函数对象,直接用函数,也是可以的。#include
#include
#include
//find_if算法bool less7(int x){ return x < 7;}int main(void){ using namespace std; vector < int > v; v.push_back(20); v.push_back(13); v.push_back(6); v.push_back(3); v.push_back(29); vector < int > ::iterator less7_iter = find_if(v.begin(), v.end(), less7); cout << *less7_iter << endl; //将打印数字6 return 0;}// 5.2 内存分配器和容器 ---------------------------------------------------------------------------------------------// 5.3 概念 ---------------------------------------------------------------------------------------------// 5.4 本章小结 ---------------------------------------------------------------------------------------------// 这章有点解读源码的味道,不必细读。

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/xin-le/p/4110291.html

你可能感兴趣的文章
关于不断刷新界面jsp+ajax
查看>>
课程总结
查看>>
storm常见问题
查看>>
java开发中使用的工厂设计模式
查看>>
struct和typedef
查看>>
3.22上午,
查看>>
解决ajax跨域问题(转自六只)
查看>>
30个必须记住的css选择器
查看>>
【BZOJ1008】1008: [HNOI2008]越狱 简单组合数学+快速幂
查看>>
Java 反射机制浅析
查看>>
HDU 1017—A Mathematical Curiosity
查看>>
分库分表的基本思想
查看>>
gcc/g++ 如何支持c11 / c++11标准编译
查看>>
书要读,博客要写
查看>>
python 单元测试之初次尝试
查看>>
jquery 获取radio被选中的值
查看>>
自己编译Android(小米5)内核并刷入(一键自动编译打包)
查看>>
关于跨平台的理解以及Unity的由来--Unity学习
查看>>
【转载】带你吃透RTMP
查看>>
Python 读取Excel数据 xlrd
查看>>