复习下模板函数和模板类

C++ 模板类使用函数指针 前几天重看了C++ primer的第16章,正好同时也复习了树的操作,于是写了个二分查找树的模板类。一开始挺顺利,后来想尝试一下使用函数指针来传递遍历树的函数,因此有了下面的问题,也从解决方法中学到了很多。        我想要的实现是这样的:有一个TravelRecursive函数,专门负责用递归的方式遍历整棵树,而遍历的方法(中序、前序、后序)想用函数指针传进来。对结点的处理函数也想用函数指 阅读详情
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <vector>
 4 #include <iostream>
 5 using namespace std;
 6 template<typename T>
 7 int binarySearch(const vector<T> &a, const T &x, int& aiTimes)
 8 {
 9     int low = 0;
10     int high = a.size() - 1;
11
12     while(low <= high)
13     {
14         ++aiTimes;
15         int mid = (low + high) / 2;
16         
17         if(a[mid] < x)
18         {
19             low = mid + 1;
20         }
21         else if(a[mid] > x)
22         {
23             high = mid - 1;
24         }
25         else
26         {
27             return mid;
28         }
29     }
30
31     return -1;
32 }
33
34 int main(int argc, char* argv[])
35 {
36     vector<int> lveci;
37     lveci.resize(100);
38     for(int i = 0; i < 100; ++i)
39     {
40         lveci[i] = i;
41     }
42
43     int liTimes = 0;
44     cout << binarySearch(lveci, -1, liTimes);
45     cout <<"\tcost:" <<liTimes <<endl;
46     liTimes = 0;
47     cout << binarySearch(lveci, 0, liTimes);
48     cout <<"\tcost:" <<liTimes <<endl;
49     liTimes = 0;
50     cout << binarySearch(lveci, 1, liTimes);
51     cout <<"\tcost:" <<liTimes <<endl;
52     liTimes = 0;
53     cout << binarySearch(lveci, 2, liTimes);
54     cout <<"\tcost:" <<liTimes <<endl;
55     liTimes = 0;
56     cout << binarySearch(lveci, 100, liTimes);
57     cout <<"\tcost:"<<liTimes <<endl;
58
59
60
61     exit(0);
62 }
63


C++ 模板类中的模板类 003:很难蒙混过关的CArray3d三维数组模板类 描述 实现一个三维数组模版CArray3D,可以用来生成元素为任意类型变量的三维数组,输出指定结果 #include <iostream> #include <iomanip> #include <cstring> using namespace std; template <class T> class CArray3D { // 在此处补充你的... 阅读详情

相关推荐

Python实战:用Py2neo轻松玩转Neo4j图数据库(附完整CRUD示例)

本文通过构建武侠知识图谱的实战案例,详细介绍了如何使用Python的Py2neo库对Neo4j图数据库进行CRUD操作。内容涵盖环境搭建、节点与关系创建、Cypher查询、数据更新删除及事务管理,帮助开发者直观高效地处理复杂关联数据,实现从入门到进阶的完整交互流程。

weixin_29034963的博客 185

SCAU期末C++复习实验六

第请按照下面程序主函数的调用情况,定义一个加法运算的函数模板,按照注释要求完善程序。//定义加法运算函数模板int main()//error,无法自动推导函数返回值//返回值在第一个类型参数中指定return 0;请给出完整程序的源代码,并粘贴运行结果。T1 sum;return sum;//error,无法自动推导函数返回值//返回值在第一个类型参数中指定//值为58return 0;

m0_74222809的博客 668

如何使用obspy下载地震波形数据

如果你是地震研究学者,或者需要进行地震方面的研究,那么地震数据下载是一个必不可少的流程,本文将告诉你如何使用obspy下载想要的地震数据

monsterk1的博客 2078

C++复习笔记

C++复习笔记 1 // CPPTEST.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 6 #include&lt;map&gt; 7 #include&lt;vector&gt; 8 #include&lt;string&gt; 9 #include&lt;list...

c1sdn19的专栏 149

RK3568 MIPI屏幕启动异常:从uboot logo到黑屏的排查与修复

本文详细分析了RK3568平台MIPI屏幕在启动过程中,从uboot阶段正常显示logo到内核阶段黑屏的典型故障。通过硬件测量与软件调试,最终定位问题根源在于电源时序,并提供了在设备树中为屏幕供电的regulator节点添加`regulator-boot-on`属性的关键解决方案,有效解决了因内核启动早期电源管理导致的显示异常。

weixin_29161719的博客 543

配置xen上VM混杂模式,使其能捕获物理网络流量

本文目的:配置VM和xen相应的物理网卡(pif)和虚拟网卡(vi

LeoDuo的专栏 3720

c++ primer plus笔记 第十八章 探讨c++新标准

一般来说,构造函数,析构函数,赋值运算符,取地址运算符以及私有成员函数是派生了无法继承的,如果像继承基类的构造函数,则可以使用using来让派生类继承基类的所有构造函数,使用这种方法一般是因为基类的构造函数比较完整,用基类的构造函数就可以完成初始化,这样就可以省去重新定义一个和基类构造函数干相同事情的操作,即使用基类的构造函数却可以创造一个派生类的对象,我们一般说的构造函数无法继承的意思是说无法用基类的构造函数直接创建一个派生类的对象。而右值引用可以修改引用所指向的对象,右值引用一般用于移动语句。

m0_51711089的博客 1014

支付宝H5支付唤醒协议全解析:从alipays://到动态orderSuffix的抓取与拼接

本文深入解析支付宝H5支付唤醒协议,从alipays://协议设计到动态orderSuffix参数的抓取与拼接,详细介绍了支付宝H5支付的底层机制。内容包括协议架构剖析、动态令牌生成与捕获、浏览器兼容性解决方案以及安全机制设计,为开发者提供全面的技术指南和实践建议。

weixin_27972919的博客 3505

重拾C++(一)--------构建自己的Vector【上】

1.构造函数 MyVector() noexcept{}: 从构造函数入手来构建自己的vector类。如下图所示,我们可以通过定义vector<T> 类型的对象或通过new的方式来构造一个 vector<T> 对象/ vector<T>* 对象指针。class A{public:A(){cout<<"A构造开始"<<endl;~A(){cout<<"A析构开始"<<endl;cout<<"对象test初始容量:"<<test.capacity()<<endl;//对象test初始容量:0。

user_xc123的博客 873

基于Vision Transformer的鸟类图像分类(200个类别)完整代码+数据

基于Vision Transformer的鸟类图像分类(200个类别)完整代码+数据

1727

《点云进阶》专栏文章目录

点云进阶》专栏文章目录

点云侠的博客 4905

利用C++模版类创建顺序表

C++模版类继承方式实习顺序表

m0_53552112的博客 362

PCL 读取和保存点云

PCL (Point Cloud Library) 是一个用于处理 3D 点云数据的开源库。在处理点云数据时,常见的任务包括点云的读写和可视化。PCL 提供了强大的 IO 模块来读取和写入各种格式的点云文件,并且提供了可视化模块来对点云进行渲染和显示。点云的读写与显示是很多 3D 数据处理任务的基础步骤,通过这些步骤,可以对点云进行预处理、分析和操作。

纵马踏花向自由 1739

复习C++(九)数组的替代品——模板类vector和模板类array

模板类vector vector类似string,是一种动态数组。即可以在运行阶段设置vector对象的长度,并在末尾附加新数据或在中间插入数据。因为它自动使用了new和delete来管理内存。 #include<vector>//要使用vector的头文件 #include<iostream> using namespace std; vector<int> ...

weixin_43484281的博客 314

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C++_STL模板类和 static 静态成员

模板类和静态成员 1 从类模板实例化的每一个模板类有自己的类模板数据成员, 该模板类的所有对象共享一个 static 数据成员 2 和非模板类的 static 数据成员一样, 模板类的 static 数据成员也应该在文件范围定义和初始化 3 static 数据成员也可以使用虚拟类型参数 T demo.cpp #include <iostream> using namespace std; template <typename T> class A { public: A(T t

weifc-wei 的博客 480

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

STL笔记07模板类如何写友元函数,不要滥用!

上来先贴结论: 类模板类外实现不要滥用友元 友元函数 先来复习一下友元函数。 友元函数是可以直接访问类的私有成员的非成员函数。它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend。 问题: 根据友元函数的特性,他是非成员函数; 在模板类中使用友元函数常常会遇到这么一个报错! 无法解析的外部符号 错误代码示例: #include<iostream> using namespace std; template<cl.

weixin_43742894的博客 559

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

转 模板类中重载操作符

今天复习一下如何重载操作符,就编了如下程序: 搜了一下,发现那么输入输出流重载为什么不能在类内声明,类外实现呢??因为模板比较特殊,我们知道操作符重载函数不是类的成员函数,因此此处相当于定义了一个新的函数模板(不同于类中的friend ostream& operator<<(ostream& out,Test& t) )。但若去掉template ,函数中的参数...

qq_42888201的博客 249

C++模板类复习

//C++模板类复习 #include using namespace std; template class test { private:     T1 temp1;     T2 temp2; public:     test(){}     test(T1 data1, T2 data2):temp1(data1),temp2(data2){}     v

学而时习之 601

c++复习2.模板(实验六、实验七)

第1题:请按照下面程序主函数的调用情况,定义一个加法运算的函数模板,按照注释要求完善程序。//定义加法运算函数模板int main()int x = 12;//error,无法自动推导函数返回值//返回值在第一个类型参数中指定return 0;请给出完整程序的源代码,并粘贴运行结果。// 定义加法运算函数模板int x = 12;// 显式指定模板参数// 返回值在第一个类型参数中指定return 0;

xuge520的博客 1190

8-1日复习 模板函数 模板类

函数的重载: //函数重载 感觉还是太繁琐 引入函数模板的概念 #include &lt;iostream&gt; using namespace std; int add(int x , int y) { return x + y; } double add(double x, double y) { return x + y; } int main() { int a = ...

阿汤哥的部落格 179

C++模板类的复习记录

翻出工程,整理总结下。供需要学习的看看就可以了。 # 函数模板 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 /** * 函数模板的定义形式: * * templat...

weixin_34318272的博客 121

Essential C++学习记录&笔记整理40(实现一个模板类)

关于new表达式 new表达式可分解为两个操作: ①向程序的空闲空间请求内存,若分配到足够空间,则返回指针,指向新对象;若未分配到足够空间,则抛出异常bad_alloc(异常处理) ②如果new 类型名(初值),则该新对象被初始化。 举个class类型的例子: _root = new BTnode<elemType>(elem); 其中elem被传入BTnode模板类的类构造函数。分配内存失败,初始化操作(类构造函数操作)不会发生。 模板类成员函数的定义/声明实战: 举几个例子吧,主要为了

Bqv它不想做功的博客 315

nrf52840擦除烧录复位全解析:nrfjprog实操与避坑指南

嵌入式开发中,Flash擦除、固件烧录与芯片复位是调试和量产的核心操作。擦除用于清空Flash内容,烧录将hex文件写入指定地址,复位则使芯片从确定状态启动,三者独立但协同保障固件正确运行。nrfjprog作为Nordic官方命令行工具,通过J-Link调试接口实现对nrf52840的整片/扇区擦除、带校验烧录及软/引脚复位,并支持APPROTECT保护解除与UICR配置。其技术价值在于脚本化、可复现的批量烧录流程,显著提升产线效率与稳定性。应用场景覆盖研发调试、产线烧录及异常恢复,尤其适合低功耗蓝牙与2.

weixin_34417200的博客 237

SSM基础专项复习7——Spring框架JDBC模板(4)

什么是模板技术:Spring 框架中提供了很多持久层的模板类来简化编程,使用模板类编写程序会变的简单。template 模板。都是 Spring 框架提供 XxxTemplate 提供了 JDBC 模板,Spring 框架提供的JdbcTemplate 类,Connection 表示连接,管理事务 Statement ResultSet。在 Spring 框架中,是一个核心类,它属于 Spring JDBC 模块,主要用于简化 JDBC 操作。下面将详细介绍。

2301_78566776的博客 676

c++复习之函数模板和类模板

函数模板与类模板函数模板概念与函数不同生成模板函数的过程函数或函数模板调用语句的匹配顺序类模板概念类模板成员函数类模板与继承 函数模板 概念 设计函数时,不给出相应数据实际类型,而是将类型参数化,实际编译时,才由编译器利用实际的类型给予实例化。这样的函数就是函数模板。 模板的参数是由函数的参数推断出来的。 定义一般格式: template <类型 参数名,类型,参数名,...> 返回值类型名 函数模板名(参数表)//参数表,即上面所说的参数名的列表 { 函数体的定义; } 类型由class 或

guangod的博客 287

模板类中重载<<和>>操作符

今天复习一下如何重载操作符,就编了如下程序: 搜了一下,发现那么输入输出流重载为什么不能在类内声明,类外实现呢??因为模板比较特殊,我们知道操作符重载函数不是类的成员函数,因此此处相当于定义了一个新的函数模板(不同于类中的friend ostream& operator& t) )。但若去掉template ,函数中的参数Test就不知是什么类型,所以不能在模板类内声明,类外实现操作

冬之晓 4636
上一篇: 安装ubuntu并sync android源码的笔记
下一篇: C++, LUA, PYTHON, BASH混用
dengdengken888
博客等级 码龄20年 12粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值