C++模板简叙

3dMax脚本类插件:不写 C++也能造“原生”工具 从plugin关键字到场景持久化,拆解 MAXScript 插件开发全流程! 阅读详情

                           

 Definition :

 

                 A predefined class or form that is applied to each new class or form you create.

Template is a “Generic Term “ . Template declaration specifies a set of parameterized classes or functions.

Main usage for Templates :

1) Receive at run time any type of argument ( string , int ,float , ..etc.,) in a

  single prototype  declaration.

2) Reduce the size ofs Code

3) Lots of Built in code like Predefined operations (Standard Template Library) (List ,map, set , ..etc )

4) Support OOPS Concept

5) Memory Management.

 Templates specifies  :

Class Template and Function Template.

Class Template :

Class templates define a family of related classes that are based on the parameters passed to the class upon instantiation

Syntax :

template  < typelist > Class Declaration

Example :

#include <iostream>
#include <string>
using namespace std;
 
ostream &newline(ostream&nel){
            return nel<<endl<<endl;
 
}
template < class T>
class James
{
             T Number;
             James *Next;
            public:
                         void Create(James<T> *);
                         void Display(James<T> *);
                         int Print(T); 
 
};
 
template <class T> void James<T>::Create(James<T> *p)
{
            //p=new James<T>;
            cout<<"Enter the Number "<<newline;
            cin>>p->Number;
            cout<<"Enter "<<newline;
            cin>>p->Next->Number;
}
 
template< class T> void James<T>::Display(James<T> *p)
{
cout<<"Answers : "<<newline<<p->Number<<newline<<p->Next->Number<<endl;
}
 
template<class T> int James<T>::Print(T Integer)
{
cout<<Integer <<newline;
return 1;
}
 
void main()
{
James<int> *m=new James<int>;
James<float> *m1=new James<float>;
James<string> *m2=new James<string>;
m2->Create(m2);
m2->Display(m2);
delete m2;
}

In the above program explain the clear idea about  “ class templates “

Function Template :

Function templates are similar to class templates, but define a family of functions .

Syntax :

 template  < typelist > Function  Declaration

Example :

#include <iostream>
#include <string>
using namespace std;
 
template<class T> void f()
{
cout<<"I Won with the Help of C++"<<endl;
}
 
void main()
{
void g();
g();
}
void g()
{
f<int>();
}
 

Standard Template Library  ( STL ) :

STL is a general purpose library consist of algorithm and data structure.

It consists of

  • Containers
  • Generic Algorithm
  • Iterators
  • Function Objects
  • Allocators
  • Adaptors

 

Sample Program :

Display a string using Vector Template

#include <iostream>
#include <vector>
using namespace std;
 
class sample{
public:
            void display()
            {
            cout<<"Display"<<endl;
            }
};
void main()
{
vector<sample> a;
vector<sample>::iterator i=a.begin();
i->display();
}

Display a Name and Year using Vector Template

#include <string>
 
using namespace std;
 
class sample{
            string name;
            int number;
public:
            sample(){}
            sample(string newname,int newnumber):name(newname),number(newnumber){}
            static void Display(vector<sample>*p)
            {
                        for(vector<sample>::iterator i=p->begin();i!=p->end();i++)
                        {
                        cout<<i->name<<"\t"<<i->number<<endl;
                        }
            }
};
 
void main()
{
            vector<sample> *a=new vector<sample>;
            cout<<endl<< "NAME "<<"\t"<<"YEAR"<<endl<<endl;;
            a->insert(a->begin(),sample("India",23));
            a->insert(a->begin(),sample("James",22));
            a->insert(a->begin(),sample("MACMET",21));
            a->insert(a->begin(),sample("Technologies",20));
            sample::Display(a);
            cout<<endl;
            delete a;
}
 

Arithmetic Function Object:

Arithmetic Function objects supports standard arithmetic operations

 

For addition Function Object  

Syntax:

 

plus<type >

Sample Program :

a)    #include <iostream>
  #include <string>
  #include <functional>
 
  using namespace std;
 
  void main()
{
            plus<int> add;
            cout<<add(1,2)<<endl;
            plus<string> add1;
            cout<<add1("james", "  prasanna ")<<endl;
}
 
 
b) #include <iostream>
#include <numeric>
#include <vector>
#include <functional>
 
using namespace std;
 
void main()
{
            minus<int> red;
            negate<int> neg;
            cout<<red(1,2)<<endl;
            cout<<neg(2)<<endl;
}
 

Auto ptr Class :

Auto_ptr class avoid memory Leak

Syntax:

auto_ptr<type>

Sample Program :

#include <iostream>
#include <memory>
#include <string>
using namespace std;
 
void main()
{
            auto_ptr<string> a(new string("jshdfjhsd"));
            cout<<*a<<endl;
            a->insert(strlen("  "),"james");
            cout<<*a<<endl;
}

Stack Template :

#include <stack>
#include <iostream>
using namespace std;
 
void main()
{
            stack<int> a;
            a.push(1);
            if(!a.empty())
                        cout<<"Not Empty "<<endl;
                 else
             cout<<"Empty "<<endl;
            cout<<a.top()<<endl;}
 
 

Set Template :

#include <set>
#include <iostream>
using namespace std;
 
void truefalse(int x)
{
            cout<<(x?"true":"false")<<endl;
}
void main()
{
            set<int> a,b;
            a.insert(1);
            a.insert(2);
            a.insert(3);
     set<int>::iterator i;
             for(i=a.begin();i!=a.end();i++)
             cout<<*i<<endl;
             truefalse(a.key_comp()(1,2));
              i=a.find(0);
             truefalse(i!=a.end());
}
 
 


 

 

实战MSP-M0G3507与陶晶驰串口屏的通信协议解析 本文详细解析了MSP-M0G3507微控制器与陶晶驰串口屏的通信协议实现。内容涵盖串口配置、协议帧结构、数据校验机制及ASCII协议实战代码,重点介绍了陶晶驰串口屏的指令集应用和调试技巧,为嵌入式开发提供可靠的串口通信解决方案。 阅读详情

相关推荐

永磁同步电机ADRC控制策略优化:从理论到Simulink仿真实践

本文深入探讨了永磁同步电机自抗扰控制(ADRC)策略的优化与实践。针对传统PID在动态响应、抗扰及噪声抑制方面的不足,详细解析了ADRC三大核心组件——跟踪微分器(TD)、扩张状态观测器(ESO)与非线性状态误差反馈(NLSEF)的工作原理。通过手把手的Simulink仿真教程,展示了从算法编写、模型搭建到参数整定的完整流程,并进阶实现了位置-速度双环ADRC协同控制,为高性能电机伺服系统设计提供了从理论到实践的清晰指南。

root9的博客 412

C++中的Container adaptors(容器适配器)

C++中的容器适配器

weixin_39861267的博客 350

C++中 在此作用域中尚未声明 的错误解决

C++中 在此作用域中尚未声明 的错误解决

hhduyc的博客 1万+

手把手教你用ET-BERT预训练模型搞定加密流量分类(附完整代码)

本文详细介绍了如何使用ET-BERT预训练模型实现加密流量分类,包括环境配置、数据预处理、模型微调及优化策略。通过实战代码示例,帮助开发者快速掌握这一技术,提升网络安全领域的加密流量分析能力。

weixin_29166013的博客 493

Databricks Genie:语义编译器架构与企业级智能解析实践

语义层是现代数据平台实现自然语言查询的核心基础,其本质是将业务术语映射为可执行、可治理的数据契约。原理上依赖结构化元数据、值字典与数据血缘三支柱协同,通过分层AI代理(如Intent Parsing、Retriever、Verifier)实现意图识别→语义对齐→安全执行的闭环。技术价值在于降低SQL使用门槛的同时保障审计性、一致性和权限可控性,适用于销售运营、财务分析等一线业务场景。本文深入解析Databricks Genie作为典型语义编译器的落地逻辑,涵盖Unity Catalog知识注入、七层Agen

weixin_29053695的博客 337

C++仿函数

根据SGI官方文档,仿函数也叫函数对象(Function Object, or Functor),定义就是任何可以像函数一样被调用的对象。一个普通的函数是函数对象,一个函数指针当然也是,广义上说任何定义了operator()的类对象都可以看作是函数对象。 最基本的函数对象概念包括Generator, Unary Function(一元函数), 和Binary Function(二元函数),分

Aegeaner的专栏 7546

智元机器人开源具身仿真框架 Genie Sim 入门教程

GenieSim是AgiBot推出的具身智能仿真框架,提供完整闭环开发管道,包括轨迹生成、模型训练和基准测试。框架支持Docker容器化部署,要求Ubuntu 22.04和NVIDIA硬件环境。主要功能涵盖: 支持12种基准测试任务 提供ADER评估框架 集成UniVLA/RDT等基线模型 支持PICO/键盘遥操作 具备轨迹记录回放功能 提供完整API控制接口 开发者可通过Hugging Face获取场景资产,使用标准化ROS主题与仿真环境交互。框架特别优化了碰撞检测和抓取物理模拟,适用于从简单抓取到复杂操

2506_90492529的博客 2537

C++ STL概述(下)

4.2. 顺序容器 顺序容器中所有的元素在容器中的物理位置都是按照特定的次序进行存放的,区别于关联容器的是顺序容器中的元素的位置都是既定的。被纳入STL标准的顺序容器包括vector、list、dequeue。 序列容器之间的共性除了容器之间应有的共性之外,还有对数据操作的接口(非实现)上: c.push_back c.pop_back c.push_front

fengzhr的专栏 688

uniapp(安卓 | 苹果) - 最新详细实现App打包发布教程,uni-app苹果IOS软件应用上架App Store软件商店,uni-app打包发布安卓Android软件到各大应用商店(详细教程

uni-app,安卓android,苹果ios,uniapp App软件,Uniapp上架发布应用,打包构建,apk、app软件,应用商店,应用市场,app store,uni-app安卓苹果app上架应用商店,app应用从创建到上架_uniapp打包app的流程和上架,uniapp打包上架ios Appstore 最全流程,苹果应用商店上架教程,uniapp生成的app怎么上架到iphone的app store,uni-app打包到上架Android , ios完整详细流程,审核一直不通过,软件商店审核失

✅ 精选推荐文章 1万+

YOLOv8改进:全网原创首发 | 新颖的多尺度卷积注意力(MSCA),即插即用,助力小目标检测 | NeurIPS2022

多尺度卷积注意力(MSCA),有效地提取上下文信息;1)作为注意力MSCA使用;

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 3842

[USACO09OPEN]捉迷藏Hide and Seek

题意简叙: 奶牛贝西和农夫约翰(FJ)玩捉迷藏,现在有N个谷仓,FJ开始在第一个谷仓,贝西为了不让FJ找到她,当然要藏在距离第一个谷仓最远的那个谷仓了。现在告诉你N个谷仓,和M个两两谷仓间的“无向边”。每两个仓谷间当然会有最短路径,现在要求距离第一个谷仓(FJ那里)最远的谷仓是哪个(所谓最远就是距离第一个谷仓最大的最短路径)?如有多个则输出编号最小的。以及求这最远距离是多少,和有几个这样的谷仓距离...

ShineEternal的笔记小屋 1115

2026年全国青少年信息素养大赛算法应用主题赛(C++赛项初赛模拟卷1及答案解析)

2026年全国青少年信息素养大赛算法应用主题赛(C++赛项初赛模拟卷1及答案解析)

王老师青少年编程 2023

[Acwing]840. 模拟散列表

算法标签:哈希表 题目简叙 思路 拉链法: 数组加链表 使用映射的方式把109映射到105的范围之内 这样有可能多个数据在同一地址下,我们只需要把对应地址做成链表形式进行查询和插入即可 注意: 1.映射值为k=(tmp%N+N)%N;,为了避免tmp%N是负数所以+N,然后为了避免溢出再%N 2.%N中N的数据最好是范围数据的第一个素数,这样在数学期望的角度上数组内重复的概率最小 图显: 插入与查找两种情况 单链表可以参考[模板题]单链表 代码 #include<iostream> #inc

代码中枢:软件工程理论与实践的桥梁 423

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

[USACO10FEB]给巧克力Chocolate Giving

题意简叙: FarmerFarmerFarmer JohnJohnJohn有B头奶牛(1&lt;=B&lt;=25000)(1&lt;=B&lt;=25000)(1<=B<=25000),有N(2∗B&lt;=N&lt;=50000)N(2*B&lt;=N&lt;=...

dianwonin4433的博客 101

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

深挖C++:类和对象(中)

(先进后出)

xys_678的博客 209

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

选型笔记:Type‑C 扩展坞方案评估|DP1.4 转 HDMI2.0 桥接芯片 GSV2201S@ACP

本文记录 GSV2201S 这款 DP1.4a 转 HDMI2.0 桥接芯片评估,梳理视频、HDCP、PD 集成能力,总结 Type‑C 转接 Dongle、扩展坞方案的适配边界,以及差分走线、PD 时序、HDCP 握手等高频调试问题,为 C 口视频转接方案选型提供参考。

ACP广源盛的博客 218

ThunderKittens 深度解析:一个不基于 MLIR 的 C++ 模板 GPU DSL

Triton 是"让更多人能写 GPU kernel",ThunderKittens 是"让会写的人写得更爽"。前者用 MLIR 换易用性,后者用 C++ 模板换可控性。它们不是替代关系,而是覆盖了 GPU 编程光谱的两端。ThunderKittens 的出现,本质上是对"GPU DSL 必须基于 MLIR"这一默认假设的挑战。编译期类型系统本身就可以是一个强大的 DSL 基础设施,不需要中间 IR,不需要黑盒 pass,也能实现 tile 级抽象和零运行时开销。

Maxwell_Newton的博客 332

C++移动构造函数详解

移动构造函数是C++11引入的一种特殊构造函数,用于从临时对象(右值)"窃取"资源来初始化新对象,而不是进行昂贵的深拷贝。char* data;public:// 移动构造函数:参数是右值引用 &&// 关键:把源对象的资源置空。

拒绝AI文,努力在AI时代写出感动人心的好文章 388

蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:倍增法求最近公共祖先LCA解析

蓝桥杯报名正在火热进行(软件赛报名 2026-10-08—12-18,省赛 2027-04-10),电子学会 12 月软件编程(C/C++ 一级至十级、Python 一级至六级)考级报名也已开启(9/23—12/2),全国青少年信息素养大赛算法应用主题赛同步推进——把 LCA 这个模板练熟,正是冲刺这些赛事树型考点的关键一步。所谓「最近公共祖先」:在一棵以某个节点为根的树里,两个节点 u、v 向上追溯,最早交汇的那个祖先就叫它们的 LCA。比如家谱里,你和你表哥最近的共同长辈就是你们的祖父。

IT_Scratch的博客 533

【C语言】字符与字符串函数

C语言中字符串为以\0结尾的字符数组,标准库函数基于此约定。本文解析字符串内存布局,详解ctype.h与string.h中字符分类、长度计算、拷贝、比较等函数的使用要点,强调长度判断与越界风险,最后通过命令行待办事项示例整合fgets、sscanf、strncpy、strcmp,展示实际应用中的关键细节。

记录在学习过程中学到的知识 343

C++ 多态详解:作用、原理与实战用法

多态是C++面向对象的核心特性,通过虚函数实现运行期动态绑定,使同一接口在不同对象上表现出不同行为。其核心作用包括统一接口、提升可扩展性、降低耦合、支持运行时分派与批量处理。实现依赖虚函数表(vtable)和虚指针(vptr),需注意虚析构函数、对象切片等陷阱。相比编译期多态(模板),运行期多态灵活性高但有调用开销。合理结合两者,可兼顾代码的灵活性与性能,是构建可扩展、低耦合系统的关键。

2402_85743155的博客 377

C++ 函数模版

模板参数:● template ,T 就是类型占位符,名字可以自定义,习惯用T● 占位符可以在函数返回值、形参、函数内部当作类型使用使用要点模板代码一般写在头文件:编译器需要看到完整模板源码,才能在每个编译单元完成实例化全局函数、类内成员函数都可以写成模板实例化发生在编译阶段,不是运行时隐式实例化:调用时编译器自动推导实参类型,生成对应版本函数。

2501_94041724的博客 301

C++ 运行时多态与虚函数机制全面剖析【面试重点】

构成C++ 运行时多态必须是基类的指针或者引用调用虚函数。被调用的函数必须是虚函数,并且派生类必须对该虚函数完成重写/覆盖(Override)。只有基类的指针或引用才能既指向基类对象,又指向派生类对象(切片机制);而只有完成了虚函数重写,派生类与基类才具备不同的函数行为,达到“指向谁就调用谁”的效果。在类成员函数的前面加上virtual关键字修饰,该成员函数就成为了虚函数。public:// 成员函数前加 virtual 修饰,声明为虚函数。

Fuyo_0209的博客 435

C++ 求抛物线的顶点、焦点和准线(Finding the vertex, focus and directrix of a parabola)

已知抛物线方程 $ y = ax^2 + bx + c $,可利用公式求其顶点、焦点和准线。顶点为 $ \left( -\frac{b}{2a}, \frac{4ac - b^2}{4a} \right) $,焦点为 $ \left( -\frac{b}{2a}, \frac{4ac - b^2 + 1}{4a} \right) $,准线方程为 $ y = c - \frac{b^2 + 1}{4a} $。以 $ a=5, b=3, c=2 $ 为例,计算得顶点 $(-0.3, 1.55)$,焦点 $(-0

csdn_aspnet的专栏,请点击博客主页右上角三个点中的私信联系 163
上一篇: C++对象序列化
下一篇: C/C++浮点数在内存中的存储方式
xiaoding133
博客等级 码龄19年 415粉丝 159原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值