关于c++模板的一些东西
来源:互联网 发布:linuxssh端口号配置 编辑:程序博客网 时间:2024/05/20 07:53
<typename 和 class>
template <class T> 和 template <typename T>的意思是相同的,
typename在此处就是为了防止class在此处的定义和类的class混淆, 初次之外,typename还有另一个用处(用做嵌套类型)
#include <iostream>#include <vector>using namespace std;template <class T, template<class U, class = allocator<U> > class Seq>void printSeq(Seq<T> &seq){for(typename Seq<T>::iterator b = seq.begin(); b != seq.end();) {cout << *b++ << endl;}}intmain(){vector<int> v;v.push_back(1);v.push_back(2);printSeq(v);return 0;}
iterator是类型T的一个嵌套类型,为了使编译器理解这种行为,需要用typename对其进行说明。
<函数模板>
函数模板和模板函数意思是一样的
template <typename T>T func(T x, T y){}
<类模板>
template <T>class Foo {public:T get_member();void set_member(T tmp);private:T member;};
<模板和编译器>
模板的定义和实现必须放置在一个文件中,这样编译器才不会报错误。这自然而然引出一个争议,定义和实现是一起放在头文件还是一起放在.cpp文件中?
我们看头文件,一般来说, 不分配的内存的都放在头文件(声明等),模板只有在其被实例的时候才分配了内存,所以放在头文件是基本合理的(吧)。
目前的编译器都是模板包含模型,声明和实现分离的还暂时不是主流
- 关于c++模板的一些东西
- 关于player的一些东西
- 关于Rss的一些东西
- 关于招聘的一些东西
- 关于log4j的一些东西
- 关于memset的一些东西
- 关于电子邮件的一些东西
- 关于sscanf的一些东西
- 一些关于hibernate的东西
- 关于emacs的一些东西
- 关于javaScript的一些东西
- 关于wlan的一些东西
- 关于bsp的一些东西
- 关于补码的一些东西
- 关于友元类的一些东西
- 关于一些语法的东西
- 关于iBeacons的一些东西
- 关于UIPageControl的一些东西
- Vmware中RedHat命令行和图形界面切换 Linux运行级别 默认界面配置 修改错误配置
- [account management] useradd, change user's group
- 你要找到黑夜里代替阳光的东西,那个叫做信念
- C++面向对象三大特性
- VS2010中SkinMagic 用法
- 关于c++模板的一些东西
- Spider Studio 数据挖掘集成开发环境
- 求一个数组的最长递减子序列
- source改变当前路径
- 配置maven-compiler-plugin
- 英语巧应用:介词
- eclipse快捷键
- 工作心得总结
- 成功演讲的3 个技巧