essential C++中的一些疑问记录
关于书中P87下列代码中,less<int>的使用,我目前的理解是 less<int> 是一个类型,& it 是对外部参数的引用。但是为何要加上引用,另外 调用该函数时 lt 对应值如何选取是我的一大疑惑,我目前的调用方法是在主函数中申请 less<int> qwe 这样的一个qwe变量。但感觉这种方式过于鸡肋了= =||。
vector<int> filter( const vector<int> &vec, int val, less<int> < )
{
....
while( (iter=find_if(iter , vec.end() , blind2nd(lt,val) ) )!=vec.end() )
....
}
int main()
{
less<int> qwe; vector<int> nvec=filter( vec, , qwe );
}
但是在此基础上,若filter函数的lt参数不加引用,则使用函数时较为方便。不过,这种调用方式我有不是很理解了。。lt到底是什么呢?
vector<int> filter( const vector<int> &vec, int val, less<int> lt )
{
....
while( (iter=find_if(iter , vec.end() , blind2nd(lt,val) ) )!=vec.end() )
....
}
int main()
{
vector<int> nvec=filter( vec, , less<int>() );
}
最后是P89中提议 依照filter()的写法将sub_vec()改为一个template function,我的做法如下,待解决的问题是如何将输出的部分(即对应ElemType型<=value的部分)存入一个新的容器(与initerator所指容器相同),也就是如何return一个答案容器。
#include <functional>
#include <vector>
#include <algorithm>
#include <stdio.h>
#include <iostream>
using namespace std; template <typename initerator,typename ElemType,typename Comp>
void sub_vec( initerator first , initerator last,ElemType val,Comp pred )
{
sort(first,last);
for(initerator it=first;it!=last;it++)
cout<<*it<<' ';
initerator iter=find_if( first,last,bind2nd(pred ,val));
for(;first!=iter;first++)
cout << *first; } int main()
{
int a[]={,,,,,,};
vector<int> vec(a,a+);
sub_vec( vec.begin(),vec.end(),,greater<int>() ) ;
}
essential C++中的一些疑问记录的更多相关文章
- essential C++中关于面向过程和面向对象的说明
昨天在阅读essential C++中看到了一个关于面向过程和面向对象的区别的例子,感觉挺好的.记录下来.... 这个例子是关于照相机的.照相机有三个性质,一个是控制位置:通常使用3个浮点数据来表示其 ...
- sql 查出一张表中重复的所有记录数据
1.在面试的时候碰到一个 问题,就是让写一张表中有id和name 两个字段,查询出name重复的所有数据,现在列下: select * from xi a where (a.username) in ...
- php实现只保留mysql中最新1000条记录
这篇文章主要介绍了php实现只保留mysql中最新1000条记录的方法和相关示例及数据库结构,十分的全面,有需要的小伙伴可以参考下. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 1 ...
- sql 中实现往表中插入一条记录并返回当前记录的ID
写一条存储过程,实现往User中插入一条记录并返回当前UserId(自增长id) --推荐写法 if(Exists(select * from sys.objects where name=N'Usp ...
- ACCESS-delphi向中插入一条记录报错,但ACCESS不会
问题:在DELPHI中向ACCESS中插入一条记录时,提示“插入错误”,但是取出SQL直接放在ACCESS中插入成功?答:原因是插入语句中的字段名是DELPHI的内部标示符.
- SqlServer查找表中多余的重复记录
1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from ...
- mysql中插入多条记录-微软批处理
当向mysql中插入大量数据时,可以使用微软的批处理方式.这样可以防止内存溢出又提高了效率.我写了一个mysql中插入多条记录的例子.赋值代码可以直接使用. 1.首先需要添加两个dll MySql.D ...
- 从远程oracle上导入到本地同一张表中不存在的记录的方法
场景:在远程oracle上存在一张表A,在本地同样存在一张相同表结构的表B.由于本地表B中保存了业务系统操作产生的几条记录,同时原来导入了A中的部分记录,但是并没有保存A中全部的记录.A中有15条记录 ...
- Oracle查询数据库中所有表的记录数
1.Oracle查询数据库中所有表的记录数,但是有可能不准建议用第二种方式进行查询 select t.table_name,t.num_rows from user_tables t 2.创建orac ...
随机推荐
- Something wrong with EnCase v8 index search results
My friend told me that she installed EnCase v8.05 on her workstation which OS version is Win 10. She ...
- Extjs的textfield的颜色设置和出现的问题笔记
Ext.getCmp('alarmsLevelVal').setFieldStyle('background-color:#ff0000;background-p_w_picpath: none; ' ...
- Windows的 IIS 部署django项目
Windows的 IIS 部署django项目 1.安装Windows的IIS 功能(win10为例): (1)进入控制面板 :选择大图标 进入程序和功能 (2)启用或者关闭Windows功能 ...
- Altium Designer16设置GND和VCC线宽规则的一种操作方法及注意事项
昨天看到学弟在画电路板,看到他设置电源线线宽时出了一点问题,设置的规则最开始有作用,后来重新从原理图导入更新PCB时,电源线变绿,规则设置点更新也没有用.接下来是操作步骤: 第一步:点击Design- ...
- unity 四叉树管理场景
当场景元素过多时,需要实时的显示及隐藏物体使得性能提示,但是物体那么多,怎么知道哪些物体需要显示,哪些物体不需要显示的.当然,遍历物体判断该物体是否可以显示是最容易想到的方法,但是每次更新要遍历所有物 ...
- jmh源码解析-整体架构
我理解的jmh运行架构图 生成字节码,字节码负责维护测试的状态和调用被测试的方法 默认在fork的进程中进行测试,可以配置多个fork进程,以减少误差 通过线程池,提交每个迭代的测试任务,任务执行后, ...
- intellIJ IDEA学习笔记3
intellij idea 的快捷鍵 https://blog.csdn.net/wei83523408/article/details/60472168 https://www.cnblogs.co ...
- 自己实现spring核心功能 一
聊聊spring spring对于java开发者来说,是最熟悉不过的框架了,我们日常开发中每天都在使用它.它有着各种各样的好处,简单易用,得心应手... ... 我们一说到spring就会讲到ioc ...
- Java连载19-用户输入和大括号省略
一.联系一个if语句 public class d19_{ public static void main(String[] args) { double a = 20.2; if(a>100 ...
- pyinstaller打包django项目成exe以及遇到的一些问题
1. 环境 环境为:win7 + Python3.6 + Django (2.1.10) + PyInstaller (3.5) 注意: 这里的PyInstaller,笔者是直接使用pip安装,中间会 ...