社区
工具平台和程序库
帖子详情
请问template 模板的概念和用处?散分中...
liumyong
2003-11-26 12:55:40
1、概念是什么(越详细越好)?
2、有什么用处(在什么场合下使用,又取到什么效果)?
3、如何使用(最优化的使用)?
4、和STL 又怎么结合使用。
5、能否结合一个好的实例讲解?
请各位不赐吝教。
...全文
116
18
打赏
收藏
请问template 模板的概念和用处?散分中...
1、概念是什么(越详细越好)? 2、有什么用处(在什么场合下使用,又取到什么效果)? 3、如何使用(最优化的使用)? 4、和STL 又怎么结合使用。 5、能否结合一个好的实例讲解? 请各位不赐吝教。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
glacierFish
2004-02-03
打赏
举报
回复
为什么我用template写的一个list和上面所列的基本相同,使用的时候,语法编译都通过,但连接时出错。在VC6.0下,连接出LNK2001错误
101monster
2003-12-10
打赏
举报
回复
呵呵,学习!
TO: mechgoukiteng(变态是一种生活态度)
请发一份《C++ Templates》给我,谢谢!
EMAIL: 101monster@163.com
cai114
2003-12-09
打赏
举报
回复
TO: mechgoukiteng(变态是一种生活态度)
请发一份《C++ Templates》给我,谢谢!
EMAIL: caissw@163.com
jeckyz
2003-12-09
打赏
举报
回复
TO: mechgoukiteng(变态是一种生活态度)
请发一份《C++ Templates》给我,谢谢!
EMAIL: ssz160@hotmail.com
glacierrr
2003-12-09
打赏
举报
回复
好啊
wenxinfly
2003-12-09
打赏
举报
回复
我的邮箱是zzxxliu@hotmail.com
lovezn0424
2003-12-02
打赏
举报
回复
template 的最大作用我觉得是类型的逻辑。市的类型可以不确定。在实践中再来配对。
其他的几个问题我觉得我楼上的回答得不错了
noirchloe
2003-12-01
打赏
举报
回复
我个人以为:
从代码的效果上看:
模板的作用在于对代码的生成
从代码的使用上看:
模板的作用在于对代码的选择
从代码的灵活上看:
模板的作用在于对接口的松散
从设计上来看:
模板的作用在于对事物的完全不确定的描述,但却可以有效的操作这些不确定的描述而不出现实际中的逻辑矛盾
mechgoukiteng
2003-12-01
打赏
举报
回复
我有《C++ Templates》,给邮箱把
不过个人认为不要走火入魔
abitz
2003-12-01
打赏
举报
回复
请提供邮箱,我这里有本《The C++ standard Library》(英文版)。
liumyong
2003-12-01
打赏
举报
回复
看了上面这么多解释,想看下书理解一下。
不知哪位能提供《The C++ standard Library》和《C++ Templates》电子书下载。
ywchen2000
2003-11-30
打赏
举报
回复
#include<iostream>
template<class T>
class node
{
private:
node<T> *next;
public:
T data;
node(void);
node(T data1,node<T> *p=NULL);
void insertafter(node<T> *p);
void deleteafter(void);
node<T>* nextnode(void);
};
template<class T>
node<T>::node(void)
{
next=NULL;
}
template<class T>
node<T>::node(T data1,node<T> *p)
{
data=data1;
next=p;
}
template<class T>
void node<T>::insertafter(node<T> *p)
{
p->next=next;
next=p;
}
template<class T>
void node<T>::deleteafter(void)
{
node<T> *temp;
temp=next;
next=temp->next;
delete temp;
}
template<class T>
node<T>* node<T>::nextnode(void)
{
return next;
}
list.h
=====================================
#include<iostream>
#include<stdlib.h>
#include"node.h"
template<class T>
class list
{
private:
node<T> *head,*newnode,*last,*currnode,*prenode;
public:
list(void);
node<T>* setnode(T data2,node<T>* p=NULL);
void createlist(T data2,node<T>* p=NULL);
void Insertlast(T p);
void deletedata(T d);
void print(void);
void deletelist(void);
void athead(void);
T Data(void);
node<T>* Next(void);
node<T>* Currnode(void);
};
template<class T>
list<T>::list(void)
{
head=NULL;
newnode=NULL;
last=NULL;
currnode=NULL;
prenode=NULL;
}
template<class T>
node<T>* list<T>::setnode(T data2,node<T>* p)
{
newnode=new node<T>(data2);
return newnode;
}
template<class T>
void list<T>::createlist(T data2,node<T>* p=NULL)
{
newnode=new node<T>(data2);
if(head==NULL)
{
head=newnode;
}
else
{
currnode=head;
while(currnode->nextnode()!=NULL)
{
currnode=currnode->nextnode();
}
currnode->insertafter(newnode);
currnode=newnode;
}
last=newnode;
}
template<class T>
void list<T>::Insertlast(T p)
{
newnode=new node<T>(p);
if(last->nextnode()==NULL)
{
last->insertafter(newnode);
}
else
{
cout<<"there are some error in last"<<endl;
exit(0);
}
}
template<class T>
void list<T>::deletedata(T d)
{
if(head==NULL)
{
cout<<"no data in the list"<<endl;
exit(0);
}
if(head->data==d)
{
head=head->nextnode();
}
else
{
currnode=head;
while(currnode!=NULL)
{
if(currnode->data!=d)
{
prenode=currnode;
currnode=currnode->nextnode();
}
else
{
prenode->deleteafter();
currnode=prenode->nextnode();
}
}
}
}
template<class T>
void list<T>::print(void)
{
currnode=head;
if(head==NULL)
{
cout<<"no data in list"<<endl;
exit(0);
}
while(currnode!=NULL)
{
cout<<currnode->data<<" ";
currnode=currnode->nextnode();
}
cout<<endl;
}
template<class T>
void list<T>::deletelist(void)
{
node<T> *temp;
if(head==NULL)
{
cout<<"no data in list"<<endl;
exit(0);
}
while(head!=NULL)
{
temp=head;
head=head->nextnode();
delete temp;
}
}
template<class T>
void list<T>::athead(void)
{
if(head!=NULL)
{
currnode=head;
}
else
{
cout<<"no data at head"<<endl;
exit(0);
}
}
template<class T>
T list<T>::Data(void)
{
if(currnode!=NULL)
{
return currnode->data;
}
}
template<class T>
node<T>* list<T>::Next(void)
{
if(currnode!=NULL)
{
currnode=currnode->nextnode();
return currnode;
}
else
{
return NULL;
}
}
template<class T>
node<T>* list<T>::Currnode(void)
{
return currnode;
}
================================================================
灌水-----无尽的任务。
liumyong
2003-11-28
打赏
举报
回复
大家这样交流可以学得更快一些,这就是去掉书上的糟粕。
模板的概念从词面的来理解,是一些有共性的事物组合在一块,形成一个样式。但感觉这样都可用类的继承和虚拟来实现,又何须模板(类模板)呢,还是不明白。
heguobaoceo
2003-11-27
打赏
举报
回复
模板可以对任何的数据类型进行同时处理
它分:函数模板和模板函数
类模板和模板类
定义形式:
template<类型参数> 返回类型 FunctionName(形式参数)
{ .... };
template<类型参数>class className
{ // class define;
}
template<类型参数>返回类型className<类名>::MemberfunctionName(形式参数)
{
//成员函数定义;
}
短歌如风
2003-11-26
打赏
举报
回复
既然称作“模板”,当然是用于根据指定的模式生成代码的语法。函数模板可以生成函数,类模板可以生成类,这一过程称作“实例化”。用途就是在你的很多代码只是处理的类型或常量不同其余基本相同时可以写成模板自动生成而不用复制代码,不但减少了工作量,更重要的是避免了修改代码时的“不完整更新”问题。至于“如何使用”则不是一个贴子能讲清楚的,而“最优使用”则见仁见智,没有定论。一般我在编程时不考虑设计模板,当第一次需要复制代码时再加入模板的设计;当使用模板的代码又需要有不同处理时再加入traits……
对于标准库的使用不需要对模板了解很多,建议仔细学习《The C++ standard Library》;如果想了解模板的设计,听说有一本《C++ Templates》不错,不过我还没看过。
winco
2003-11-26
打赏
举报
回复
模板分两种,
函数模板和类模板,它们都提供一种公用机制
用处?当然是希望提供共用又不愿意多写代码,而且,基本上这些标准模板提供的一些接口和操作函数都足够我们使用
如何使用,参看The C++ Standard Library,
怎么结合,想用就用吧。比如想要一个能动态增长的数组,又不愿意去写链表,那就用vector或者list或者……
abitz
2003-11-26
打赏
举报
回复
是太复杂了,找书看看吧,看屏幕多累
liumyong
2003-11-26
打赏
举报
回复
哎,这年头有分没人要,还是我问得问题太复杂了
我自己↑
template
.js
模板
引擎的实战应用
在现代的Web开发过程
中
,
模板
引擎已经成为一个不可或缺的部分。它们不仅是数据与视觉表现之间的桥梁,还极大地提升了开发效率和应用的可维护性。
模板
引擎是一种工具,它允许开发者使用特定的
模板
语言来分离数据与...
C++
模板
保姆级详解——
template
<class T>(什么是
模板
?
模板
分哪几类?
模板
如何应用?)
在我们学习C++时,常会用到函数重载。而函数重载,通常会需要我们编写较为重复的代码,这就显得臃肿,且效率低下。...那么,
模板
的出现,就让这些问题有了解决方案,所以本次博客将为大家详细的讲解C++的
模板
!!
模板
引擎art
Template
:
模板
引擎的基础
概念
、
模板
引擎的语法
1.2 art-
template
模板
引擎 在命令行工具
中
使用 npm install art-
template
命令进行下载。 使用const
template
= require('art-
template
')引入
模板
引擎。 告诉
模板
引擎要拼接的数据和
模板
在哪 const html =
template
...
模板
函数
1.什么是
模板
函数?2.
模板
函数怎么写?3.
模板
如何进行实例化? 隐式实例化? 显式实例化?4.什么是参数推演? 5.
模板
函数如何编译? 6.
模板
函数的
模板
参数列表? 类型参数? 非类型参数?7.
模板
函数的重载?8.什么是
模板
的特化?...
C++编程语言
中
模板
(
template
)介绍
C++的STL(Standard
Template
Library)容器及其迭代器和算法,都是泛型编程的例子,它们都使用了
模板
的
概念
。每个容器都有一个单一的定义,比如vector,我们可以定义许多包含不同类型元素的vector,比如:“vector ”...
工具平台和程序库
24,857
社区成员
27,330
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章