模板偏特化有什么实际的例子吗,到底有什么用?

看到机器就疯狂 2013-06-03 12:24:56
模板偏特化实际的例子有哪些?不用举vector的例子,那我也看不懂,要短而小的例子,并且很有用的。
...全文
360 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
ligand 2015-06-06
  • 打赏
  • 举报
回复
模板的特化/偏特化,是泛型编程的最根本的语言结构!!! 这就相当于普通编程时的if-then-else分支语言结构。 不过模板编程时的分支情况是依据 模板参数的类型 去选择不同的执行路径: 如果是int型那么程序走这条路;如果是float型那么走那条路;如果是左值引用类型走第三条路;。。。。。。 举个极为精悍的小例子。这就是STL 的<utility>中的std::remove_reference类模板。 其功能是把一个(作为模板参数传进来的)数据类型去除“引用”得到其基类型。其实现为一个普通模板与两个偏特化模板,每个只需要写一行: template< class T > struct remove_reference {typedef T type;}; //普通模板 template< class T > struct remove_reference<T&> {typedef T type;}; //偏特化模板,适用于左值引用 template< class T > struct remove_reference<T&&> {typedef T type;}; //偏特化模板,适用于右值引用(实际上也适用左值引用) 这种模板编程,由编译器来执行(编程者所期望的)程序流程。编译器优先选择做特化的模板并套用之。这就相当于依据模板参数的类型来做了if-then-else分支判断。对于左值引用类型,编译器当然要用上述第二个类模板;对于右值引用类型,编译器只好选择第三个类模板;对于既不是左值引用也非右值引用的类型【即它就不是引用类型】只好选择第一个模板。这就轻而易举的实现了 数据类型去除“引用”得到其基类型 的功能。 结论:对于编程者来说,模板的特化/偏特化的最根本功用就是一种if-then-else的语言分支结构。
ForestDB 2013-06-04
  • 打赏
  • 举报
回复
依稀记得“特化”主要是 针对“特定”的类型而做的性能优化 而书上很经典的例子就是针对char*这种特殊的vector。
橡木疙瘩 2013-06-04
  • 打赏
  • 举报
回复
特化不只是为了性能优化,更多是为了让模板函数能够正常工作,最典型的例子就是STL中的iterator_traits algrithm中大多数算法通过iterator对象来处理数据,但同时允许以指针代替iterator对象——这是为了支持C-style array。如果直接操作iterator,那么为了支持指针类型,每个函数都要进行重载,因为指针没有::valut_type类型,也没有.swap成员方法……这样就会很麻烦。为了解决这一问题,STL使用了iterator_traits,并为指针类型进行特化,算法通过它来操作iterator,不需要知道实际操作的是iterator对象还是指针。 template <typename IteratorClass> class iterator_traits ... template <typename ValueType> class iterator_traits<ValueType *> ... template <typename ValueType> class iterator_traits<ValueType const *> ... 后两个版本的iterator_traits就是对指针类型的特化,这也是一种偏特化的常见形式。
  • 打赏
  • 举报
回复
引用 3 楼 bluewanderer 的回复:
以前被GCC 4.2折磨,现在居然完全想不起来当初被怎么折磨的了... 最简单的例子就是像vector这样,两个模板参数没半毛钱关系的:
template <class T2>
struct Goo
{
	void goo(T2 v)
	{
	}
};

template <class T1, class T2>
struct Foo : Goo<T2>
{
	void foo(T1 v)
	{
	}
};

template <class T2>
struct Foo<int, T2> : Goo<T2>
{
	void foo(int v)
	{
	}
};
你这个例子完全没有用吗, 要有用的。
bluewanderer 2013-06-03
  • 打赏
  • 举报
回复
引用 12 楼 xiaohuh421 的回复:
首先要理解什么叫"模板的特化". 我的理解是这样的, 模板特化 就是 把原来不确定的类型,变成具体类型了. 也就是把T换成了具体的数据类型. 就像vector本身声明是 vector<T> 但是我们特化的时候就是 vector<int> 指定了具体类型了. 网上说分 全部特化和部分特化. 我就按我的理解写一个例子吧: template<class T> class CMyClass { T m_Data; public: CMyClass(){}; ~CMyClass(){}; T GetData(){return m_Data;} }; 然后特化为int CMyClass<int> myIntData; 特化为DWORD CMyClass<DWORD> myDwData; 如果我理解有错, 请大家指正.
这是模板实例化,不是特化。
xiaohuh421 2013-06-03
  • 打赏
  • 举报
回复
首先要理解什么叫"模板的特化". 我的理解是这样的, 模板特化 就是 把原来不确定的类型,变成具体类型了. 也就是把T换成了具体的数据类型. 就像vector本身声明是 vector<T> 但是我们特化的时候就是 vector<int> 指定了具体类型了. 网上说分 全部特化和部分特化. 我就按我的理解写一个例子吧: template<class T> class CMyClass { T m_Data; public: CMyClass(){}; ~CMyClass(){}; T GetData(){return m_Data;} }; 然后特化为int CMyClass<int> myIntData; 特化为DWORD CMyClass<DWORD> myDwData; 如果我理解有错, 请大家指正.
bluewanderer 2013-06-03
  • 打赏
  • 举报
回复
以前被GCC 4.2折磨,现在居然完全想不起来当初被怎么折磨的了... 最简单的例子就是像vector这样,两个模板参数没半毛钱关系的:
template <class T2>
struct Goo
{
	void goo(T2 v)
	{
	}
};

template <class T1, class T2>
struct Foo : Goo<T2>
{
	void foo(T1 v)
	{
	}
};

template <class T2>
struct Foo<int, T2> : Goo<T2>
{
	void foo(int v)
	{
	}
};
qq453345496 2013-06-03
  • 打赏
  • 举报
回复
等你以后遇到了,需要了的时候再学习模板吧,船到桥头自然直,不然大神们也没几个能帮到你
bluewanderer 2013-06-03
  • 打赏
  • 举报
回复
引用 8 楼 u010828523 的回复:
我想要一个能实现某种有用的功能的特化,哼哼。
你还是暂时不要再学模板了。模板要解决的问题根本不在你所要的“有用功能”这个层面上。钻一个你根本不打算去理解的问题的牛角尖一点意义都没有。
lm_whales 2013-06-03
  • 打赏
  • 举报
回复
这两个类就是使用的模板偏特化。具体以后再研究一下! string; wstring;
bluewanderer 2013-06-03
  • 打赏
  • 举报
回复
啊 看错了...
bluewanderer 2013-06-03
  • 打赏
  • 举报
回复
#include <stdio.h>

template <class T>
void print(T v)
{
	puts("Huh?");
}

template <>
void print<int>(int v)
{
	printf("%d\n", v);
}

template <>
void print<float>(float v)
{
	printf("%f\n", v);
}

int main()
{
	print(1);
	print(1.0f);
	print(1.0);
}
  • 打赏
  • 举报
回复
我想要一个能实现某种有用的功能的特化,哼哼。
bluewanderer 2013-06-03
  • 打赏
  • 举报
回复
引用 6 楼 u010828523 的回复:
那这个例子有什么功能呢?
功能就是可以在保留基类多态的基础上,特化子类。模式的功能在于你能怎么干,而不是干了之后能得到什么。我想你就是没搞清楚这个问题,所以会觉得部分特化没用。
Coder_Y_Jao 2013-06-03
  • 打赏
  • 举报
回复
无论特化还是偏特化,一般很少直接使用,所以你会觉得别人给的代码没什么意义,不过这样的代码更容易理解。 其实直接使用一般预示着可能你的设计存在缺陷了,实际上它多用于高级萃取甚至判定,有类似于汽车档位的作用。可以参考gcc 标准库源码中的各种conditional\__and_\__not_\__or_
  • 打赏
  • 举报
回复
那这个例子有什么功能呢?
xiaohuh421 2013-06-03
  • 打赏
  • 举报
回复
引用 13 楼 bluewanderer 的回复:
[quote=引用 12 楼 xiaohuh421 的回复:] 首先要理解什么叫"模板的特化". 我的理解是这样的, 模板特化 就是 把原来不确定的类型,变成具体类型了. 也就是把T换成了具体的数据类型. 就像vector本身声明是 vector<T> 但是我们特化的时候就是 vector<int> 指定了具体类型了. 网上说分 全部特化和部分特化. 我就按我的理解写一个例子吧: template<class T> class CMyClass { T m_Data; public: CMyClass(){}; ~CMyClass(){}; T GetData(){return m_Data;} }; 然后特化为int CMyClass<int> myIntData; 特化为DWORD CMyClass<DWORD> myDwData; 如果我理解有错, 请大家指正.
这是模板实例化,不是特化。[/quote] 感谢, 那我确实理解错了.
xiaohuh421 2013-06-03
  • 打赏
  • 举报
回复
http://blog.csdn.net/zhuimengzh/article/details/6838886
qq120848369 2013-06-03
  • 打赏
  • 举报
回复
建议楼主读书。
bluewanderer 2013-06-03
  • 打赏
  • 举报
回复
引用 4 楼 u010828523 的回复:
[quote=引用 3 楼 bluewanderer 的回复:] 以前被GCC 4.2折磨,现在居然完全想不起来当初被怎么折磨的了... 最简单的例子就是像vector这样,两个模板参数没半毛钱关系的:
template <class T2>
struct Goo
{
	void goo(T2 v)
	{
	}
};

template <class T1, class T2>
struct Foo : Goo<T2>
{
	void foo(T1 v)
	{
	}
};

template <class T2>
struct Foo<int, T2> : Goo<T2>
{
	void foo(int v)
	{
	}
};
你这个例子完全没有用吗, 要有用的。[/quote] 基类是个模板,子类有另外的模板参数。这个时候如果需要特化子类的部分就必须用partial。这种地图炮都没用的话,我是不知道什么还有用了。
加载更多回复(1)
一组新的多维数组模板类 by chen3feng(RoachCock@smth) email: chen3feng@163.com, chen3fengx@163.com, chen3fengx@hotmail.com [引言] 在C/C++开发中,多维数组是一个让很多人感到棘手的问题.原因是C/C++中,多维数组被看 作是数组的数组. 在向函数传递参数的时候,多维数组经常让人感到是麻烦的制造者,通常都是传递首地址 和每一维的大小: void foo(int *,int ,int);; int a[10][10];; foo(&a[0][0],10,10);; //... 十分的麻烦,在函数中访问时也得自己用乘法来计算元素的位置,更是十分麻烦. C99标准推出了可变大小的多维数组,当然,实现该标准的编译器还不多,但是也从一个方 面说明了变量大小的多维数组是很有用的. C++标准直到现在还不支持,明年(2003年)的新标准也不知道会不会加进去.但是C++程序 员自己有办法,利用C++的模板,运算符重载等技巧,完全可以构建出方便实用的多维数组类 我抢在明年之前做出这组模板类,也希望即使新标准增加了变量大小的多维数组,我的工 作也仍有一些意义, :) 另外,多维数组的空间是连续的,这跟用vector of vector实现的不一样,可以用迭代器 从头到脚挨个摸一遍. boost库也提供了多维数组类,当然还有别的几个数组类.我感觉boost多维数组类的缺点 就是只支持动态数组,对静态和动态数组没有一个统一的非GP的接口,因此我着重于这方 面的改进, [简介] 该组类有以下几个类模板组成 1. template <;typename T, size_t DimNum>; class array_base;; 该类是其他几个数组类的基类 // 由于编译器对C++标准实现参差不齐的原因,该类实际 上不是根类,不过应用中不需要知道这一点. 提供了基本的功能,比如[]运算符,迭代器的类型声明,迭代器的获取,value_type等的定 义等 等 2. template <;typename T, size_t d1, size_t d2 = -1, size_t d3 = -1>; class static_array;; 静态的数组类,从array_base派生而来,因此除了兼容也是由array_base派生出来的其他 类外,还有自己的特点,就是提供了一个elements的public成员,直接暴露给用户,访问 速度可以很快. 3. template<;typename T,size_t DimNum, typename A=std::allocator<;T>; >; class dynamic_array;; //:public array_base<;T, DimNum>; 看得出也是从array_base派生的,另外,他是可以resize的.还支持reserve等STL容器的操 作. 4. template <;typename T, size_t DimNum, typename A=std::allocator<;T>; >; class shared_array;; //: public array_base<;T, DimNum>; 就是支持引用计数的动态数组啦.不过刚写了个外皮,内容还没开工,因为我最近要回家. sorry! [用法] 先要包含各自的头文件: #include ";static_array.hpp"; #include ";dynamic_array.hpp"; #include ";shared_array.hpp"; 1.然后就可以定义对象 cfc::static_array<;int,10>; sa1;; cfc::static_array<;int,10, 10>; sa2;; cfc::static_array<;int,10, 10, 10>; sa3;; cfc::dynamic_array<;int, 1>; da1(cfc::extents[10],10);; cfc::dynamic_array<;int, 2>; da2(cfc::extents[10][10], 10);; cfc::dynamic_array<;int, 3>; da3(cfc::extents[10][10][10], 10);; cfc::shared_array<;int,1>; sha1(cfc::extents[10]]);; cfc::shared_array<;int,2>; sha2(cfc::extents[10][10]);; cfc::shared_array<;int,3>; sha3(cfc::extents[10][10][10]);; extents是一个数组的维度生成器,用起来的很方便,跟boost学的,不过没仔细看它的实现 ,我觉得我的也不错,哈哈 2.访问元素: sa1[0] = 0;; da1[0] = 0;; sa2[0][0] = 0;; da2[0][0] = 0;; sa3[0][0][0] = 0;; da3[0][0][0] = 0;; 3.比较相等与否: bool f;; f = sa1==sb1;; f = da1==da1;; f = sa1==da1;; // 说明:只提供了==和!=,别的没提供,我觉得别的意义大 4.交换: cfc::swap(da1,db1);; cfc::swap(sa1,sb1);; cfc::swap(sa1,db1);; //说明:动态数组的交换很高效,换个指针而已, :) 5.resize: da3.resize(cfc::extents[10][100][1]);; da3.resize(cfc::extents[10][50][1]);; da3.resize(cfc::extents[10][10][20]);; da3.resize(cfc::extents[10][10][10]);; //说明:只有动态数组才能resize, 还有将来的shared_array, zz 6.赋值: da3 = db3;; sa1 = sb1;; da1 = db1;; 静态数组维度不一样不能赋值,否则会引起编译错误 动态数组和丢失了静态大小成为了array_base的数组维度不一样时,赋值引发 std::length_error异常,可以捕捉到, 比较也是这样 7.作为函数的参数 还举开头的那个例子 void foo(array_base<;int,2>; &a) { a[0][0]=10;; } 8.重要概念 <;子数组>; 高维数组的子类型,也就是低一维的数组. 子数组的类型为array_base,支持array_base的所有操作,但是不再支持原来数组的特定 操作子数组由[]运算符得到, sa3[0] da3[0] //类型均为array_base<;int,2>; 子数组还可以在取子数组 da3[0][1];;//类型为array_base<;int,1>; [性能] 三维大小均为100的静态,动态,原生数组以及boost::multi_array.以三重循环每次隔一个 填充, 我测试的结果,速度大概是原生数组的60%,boost数组的速度是原生数组的1/5,因此速度 大概是boost的3倍. 如果用迭代器顺序访问的话,跟原生数组相比就区别不大了.但是代码要好写一点,而且直 接支持STL算法. [实现与移植] 由于要兼顾各种编译器,而且是在VC6上做的,因此像模板特化等特性都不能用,需要变 通,因此相当繁琐,由此可见一个好的编译器多么重要啊. 不过话说回来,这样的代码移植性才好呢.想想连VC6都能编译的代码,移植性应该不错, :) [后记] 这是对以前的那个多维数组类的扩充与改进,增加了不少功能,去掉了不少限制, 现在静态数组的最大维数做到了3,动态数组的维数不限//你需要多高维数的?维数越高越 慢, :) 由于时间不多,精力和水平有限,其中的缺点和错误欢迎指正,也十分欢迎哪位能帮我进一 步提高访问速度. 谢谢! 附带测试程序,其中包括与boost::multi_array<;>;的速度比较代码. //the end. ^=^
新手编程导论 ———— A Programming Introduction For Beginners By Minlearn @ http://www.actyou.com.cn/ 设计才是真正的编程! 对类型的设计才是设计! 面向对象并非一切? 无论你以为上述观点是惊天大秘或不过尔尔,你都需要这本书! -------------------------------------------------------------------------------------------------------------- Todo: 整合过长的目录 完善前二十页 -------------------------------------------------------------------------------------------------------------- 目 录 第一部分 9 前 言 9 By Chenyi 9 By Minlearn 10 导 读 14 任何语言都是有门槛的 14 什么是语言级和语言外要学习的(数据结构与代码结构) 15 什么是语言级要学习的 17 编程学习方法 18 计算机学生专业课程本质讲解 18 用C++开发要学到什么程度 20 本书目录安排 21 第二部分 基础:导论 25 第1章 系统 25 1.1 何谓PC 25 1.2 图灵机与冯氏架构 26 1.3计算机能干什么 27 1.4 内存地址 28 1.5 分段和分页以及保护模式 30 1.7 操作系统 31 1.6 并发与协程 33 1.6 CPU与异常 33 1.7 所谓堆栈 34 1.8 真正的保护模式 36 1.9 异常与流转 38 1.10 最小,最完美的系统 39 1.11 操作系统与语言的关系 41 1.12 虚拟机与语言 41 1.13 虚拟机与语言 42 1.14 调试器与汇编器 43 1.15 平台之GUI 45 1.16 界面的本质应该是命令行功能支持下的配置描述文件 45 1.17 命令行下编程实践 46 第2章 语言 47 2.1 真正的计算模型 47 2.2 开发模型与语言模型 49 2.3 正规表达式与有限自动机 53 2.4 联系编译原理学语言 56 2.6 如何理解运行时 59 2.7 运行时环境 60 2.7 运行时 60 6.3 语言的类型系统 60 2.8 编译与解释 62 2.9 运行期与编译期 62 2.9 编译与运行期分开的本质与抽象 63 2.10 脚本语言 63 2.11 灵活性与安全性 65 2.12 二进制指令与循环 66 2.13 所谓函数 67 2.14 所谓流程 68 2.15 为什么需要数据类型和数据结构 68 2.16 数据类型和数据结构是二种不一样的东西 69 2.17 为什么需要变量这些东东 69 2.18 面向类型化的设计和面向无类型泛化的设计-OO不是银弹 70 第3章 语言之争 71 3.1 学编程之初,语言之争 71 3.2 语言与应用与人(1) 72 3.2 语言与应用与人(2) 73 3.3 C与Ruby 74 3.4 你为什么需要Ruby 75 3.5 C++还是Ruby 76 3.6 C++与Java 76 3.7 .NET与JVM 77 3.8 你为什么需要Ruby 78 3.9 语言功能上的差别 79 3.10 C与C++之争 80 3.11 我为什么选择C而不是C++及其它语言 81 3.12 类VB,DELPHI类RAD语言分析 82 第4章 语言最小内核(C) 83 4.1 C与C++是二种不同的语言 83 4.2 C的数组,指针与字符串 84 4.3 C的输入与输出流 84 4.4 C的类型系统与表达式 85 4.5 二进制指令看循环 85 4.6 所谓指针:当指针用于设计居多时 86 4.7 指针成就的C语言 86 4.8 指针是语言的一种抽象机制 88 4.9 学C千万不能走入的一个误区(其实JAVA比C难) 88 4.10 C抽象惯用法 90 4.11 C的抽象范式之OOP 91 4.12 C的观点:底层不需要直接抽象 93 4.13 指针:间接操作者 94 4.14 真正的typedef 95 4.15 真正的指针类型 95 4.16 真正的函数指针 97 4.17 真正的句柄 97 4.18 真正的循环 98 4.19 真正的static 98 4.20 真正的数组索引 99 4.21 类型和屏看原理 100 4.22 位操作与多维数组指针与元素 101 4.23 变量与VOID 102 第5章 抽象 102 5.1 人与软件 103 5.2 软件活动的特点 103 5.2 抽象与接口 104 5.3 过度抽象 105 5.3 OO为什么不是银弹 - 过度抽象与抽象差 106 5.4 真正的设计与编码 107 5.5 真正的构件库 109 5.6 大逻辑与小逻辑 112 5.7 什么是范式 112 第6章 抽象之数据结构 113 6.1 所谓数据结构 113 6.2 算法+数据结构的本质 115 6.4 算法不是设计 115 6.5 函数增长与算法复杂性分析 115 6.6 数据结构初步引象(1) 116 6.7 数据结构初步引象(2) 117 6.8 数据结构初步引象(3) 118 6.9 数据结构初步引象(4) 119 6.10 ordered与sorted 119 6.11 数据结构与抽象 119 6.12 真正的逻辑数据结构只有二种 120 6.12 树与图初步引象 121 6.13 树初步引象 122 6.14 B减树 123 6.15 图初步引象 124 6.16 树的平衡与旋转 125 6.17 完全与满 129 6.18 多路234树与红黑树的导出 129 6.19 快速排序思想 130 6.20 数据结构之数组 131 6.21 数据结构的抽象名字 132 6.22 真正的ADT 133 6.23 Vector的观点 135 6.24 真正的数据结构 136 6.25 堆栈与队列 138 6.26 真正的递归 140 6.27 树与单链表,图 145 6.28 树 146 6.29 真正的散列表 148 6.30 算法设计方法 148 第7章 抽象之高级语法机制 149 7.1 真正的OO解 149 7.2真正的对象 151 7.3真正的继承 152 7.4真正的OO 152 7.5真正的OOP 154 7.6 真正的构造函数 155 7.7 真正的私有,保护和公有 156 7.8 真正的重载与复写 156 7.9 C++的元编程 156 7.10 模板的意义在于编译前端的设计 157 7.11 C++的元编程和泛型编程 159 7.12 元编程和函数式编程 159 7.13 C++的模板编译技术本质 161 7.14 OO的缺点 161 7.15 模板的继承 162 7.16 模板特化 162 7.17 真正的策略 162 7.18 为设计产生代码 164 7.19 真正的metaprogramming 165 7.20 元编程技术 166 第8章 抽象之设计和领域逻辑 167 8.1 大设计 167 8.1 什么是设计 167 8.2 编程能力,代码控制能力,复用与接口,轮子发明与使用 170 8.3 OO,模板,设计模式与设计 171 8.4 设计能力和程序员能力模型 172 8.4 自上而下设计和自下而上设计 173 8.5 大中型软件和复用与逻辑达成 177 8.6 通用设计与专门设计 178 8.7 具象与抽象 178 8.7 架构与应用 179 8.8 应用与设计 179 8.9 与软件有关的哲学 联系 180 8.10 与软工有关的哲学 唯物主义 180 8.11 真正的设计模式 182 8.12 设计模式与数据结构 182 8.12 设计模式之基础 183 8.12 真正的开闭原则 183 8.13 真正的通米特原则 184 8.14 真正的好莱钨原则 185 8.15 真正的策略模式 185 8.16 真正的观察者模式 185 8.17 真正的装饰模式 186 8.18 真正的单例模式 186 8.19 真正的迭代器模式 186 8.20 真正的工厂模式 187 8.21 真正的门面模式 187 8.22 真正的命令模式 188 8.23 真正的模板方法模式 188 8.24 真正的适配器模式 188 8.25 业务与逻辑分开 189 8.26 架构不是功能的要求,但却是工程的要求 189 8.27 你需不需要一个库 190 8.28 可复用与可移殖的区别 190 8.28 再谈可复用 193 8.29 真正的可复用 193 8.30 你能理解XP编程吗 194 8.31 构件与接口,软工 195 8.32 设计方法论 196 8.33 真正的interface 198 8.34 真正的对接口进行编程 200 8.35 实践方法之极限编程 200 8.36 设计模式复用与框架复用 201 第三部分 进阶: C,C++代码阅读与控制 201 第9章 语法与初级标准库 202 9.1 C++的基于过程设计 203 9.2 C++的基于对象设计: 模板与设计 203 9.3 面向对象设计 204 9.4 泛型开发与初级StdC库 204 第10章 数据逻辑与STL库 204 10.1 仿函数 204 10.2 iterater 204 10.3 adapter 205 第11章 高级代码逻辑与LOKI库 205 11.1 typelist 205 11.2 traits 206 11.2 policy 206 第四部分 一个例子:游戏引擎和实现 206 第12章 设计(需求分析) 207 12.1 第一天:接到一个案子 207 12.2 第二天:需求分析 208 第13章 设计(领域分析与抽象) 210 13.1 原语设计 210 13.2 了解Yake 216 13.3 GVWL1.0开发 222 13.4 范型设计与实作 223 第14章 编码 224 14.1 原语设计 224 14.2 实现《梦想与财富》 224 第15章 重构 225 15.1 增加Jxta 225 第五部分 225 选读 225 字符与字符串 226 为什么我说Java是脚本语言 226 宽松语法,无语法语言 227 Linux与3D 228 伪码语言 229 最强大的语言原来是预处理 230 语言宿主 231 shell编程和交互式语句编程 232 Debug,编译期断言 232 图形原理之位图,图象和字体 233 为Windows说些好话 233 Minlearn Ruby (5) 网络原理与P2P 234 Minlearn Ruby(4) 字符串与WEB 234 加密与解密 235 Minlearn(3)载体逻辑 236 Minlearn(2) 平台与并发 237 Minlearn(1)平台之持久 237 平台之多媒体编程 237 Minlearn Ruby 238 思想,维度,细节 240 理想 241 XML 242 面向更好复用的封装机制 243 SOA 244 浮点标准与实现 244 Desktop,web,internet,云计算不过WEB的集中化这种说法的偷换概念 246 编程设计与经济 246 晕计算 247 在形式主义与直觉主义之间:数学与后现代思想的根源 248 Scheme 程序语言介绍之一 248 与软工有关的哲学 辩证 251 富网页技术 251 形式维度 252 开源与开放 253 Core learning and min learing编程 253 与软工有关的哲学 联系 254 本地化和语言编码 254 学习与维度 255 跟软件有关的哲学.唯物主义 255 关于逻辑的逻辑 256 合理性 257 语言,道理和感情 258 可恶OO 259 互联网与企业开发 259 会学习的人首先要学历史 260 离散数学与代数系统 262 线代与矩阵 262 计算机与编程 263 真正的二进制 265 真正的文件 266 真正的数据 267 真正的Unicode 267 真正的Windows消息 269 真正的XML 270 真正的GUI 271 设备环境 271 真正的MFC 273 真正的虚拟机 275 真正的.NET 276 真正的脚本 278 真正的并发性 279 真正的反工程 280 真正的DSL 282 真正的多范型设计 284 真正的调试 285 真正的浮点数 286 真正的布尔 288 真正的整型数 289 真正的引用 290 真正的RTTI 290 真正的句柄 292 真正的循环 293 真正的STL 293 真正的容器 295 真正的智能指针 295 真正的数组索引 296 数据库 297 真正的可持久化 298 真正的类库 299 真正的COM 300 真正的DCOM 301 真正的Sun策略 302 真正的J2EE 303 真正的EJB 304 附录:一些领域逻辑,通用OO设计策略,框架设计 305 附录:参考文献 305 附录:一些建议 305

64,636

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧