摘要:
【C++11用于计算函数对象返回类型的统一方法】 模板std::result_of被TR1 引进且被 C++11 所采纳,可允许我们决定和使用一个仿函数其回返值的类别。底下,CalculusVer2对象使用std::result_of对象来推导其仿函数的回返值类别: 如此一来,在实体化CalculusVer2其仿函数时,不会有类别转换,警告或是错误发生。 模板std::result_of在 TR1 和 C++11 有一点不同。TR1 的版本允许实现在特殊情况下,可以无法决定一个函数调用其回返值类别。然而,因为 C++11支持了decltype,实现被要求在所有情况下,皆能计算出回返值... 阅读全文
posted @ 2014-01-03 23:04
Tekkaman
阅读(1257)
评论(0)
推荐(0)
摘要:
【C++11用于元编程的类别属性】 许多算法能作用在不同的数据类别; C++ 模板支持泛型,这使得代码能更紧凑和有用。然而,算法经常会需要目前作用的数据类别的信息。这种信息可以通过类别属性 (type traits) 于模板实体化时将该信息萃取出来。 类别属性能识别一个对象的种类和有关一个类别 (class) (或 struct) 的特征。头文件描述了我们能识别那些特征。 底下的例子说明了模板函数‘elaborate’是如何根据给定的数据类别,从而实体化某一特定的算法 (algorithm.do_it)。 通过定义在的类别属性,自定的类别转换是可能的 (在模板中,static_ca... 阅读全文
posted @ 2014-01-03 23:01
Tekkaman
阅读(912)
评论(0)
推荐(0)
摘要:
【C++11多态函数对象包装器】 针对函数对象的多态包装器(又称多态函数对象包装器)在语义和语法上和函数指针相似,但不像函数指针那么狭隘。只要能被调用,且其参数能与包装器兼容的都能以多态函数对象包装器称之(函数指针,成员函数指针或仿函数)。 通过以下例子,我们可以了解多态函数对象包装器的特性: 模板类function将定义在头文件参考:http://zh.wikipedia.org/wiki/C++0x#.E5.A4.9A.E6.80.81.E5.87.BD.E6.95.B0.E5.AF.B9.E8.B1.A1.E5.8C.85.E8.A3.85.E5.99.A8 阅读全文
posted @ 2014-01-03 22:54
Tekkaman
阅读(1187)
评论(0)
推荐(0)
摘要:
【C++11包装引用】 我们可以通过实体化样板类reference_wrapper得到一个包装引用 (wrapper reference)。包装引用类似于一般的引用。对于任意对象,我们可以通过模板类ref得到一个包装引用 (至于 constant reference 则可通过cref得到)。 当样板函数需要形参的引用而非其拷贝,这时包装引用就能派上用场: 这项功能将加入头文件。参考:http://zh.wikipedia.org/wiki/C++0x#.E5.8C.85.E8.A3.85.E5.BC.95.E7.94.A8 阅读全文
posted @ 2014-01-03 22:48
Tekkaman
阅读(638)
评论(0)
推荐(0)
摘要:
【C++11能用智能指针】 shared_ptr是一引用计数 (reference-counted) 指针,其行为与一般 C++ 指针即为相似。在 TR1 的实现中,缺少了一些一般指针所拥有的特色,像是别名或是指针运算。C++11新增前述特色。 一个shared_ptr只有在已经没有任何其它shared_ptr指向其原本所指向对象时,才会销毁该对象。 一个weak_ptr指向的是一个被shared_ptr所指向的对象。该weak_ptr可以用来决定该对象是否已被销毁。weak_ptr不能被解参考; 想要访问其内部所保存的指针,只能通过shared_ptr。有两种方法可达成此目的。第一,类... 阅读全文
posted @ 2014-01-03 22:44
Tekkaman
阅读(2620)
评论(0)
推荐(0)
摘要:
【C++正则表达式】 这个新的程序库,被定义于头文件,由几个新的类型所组成:正则表达式(样式)以样板类basic_regex的实体表示样式匹配的情况以样板类match_results的实体表示 函数regex_search是用来搜索样式; 若要搜索并取代,则要使用函数regex_replace,该函数会回传一个新的字符串。算法regex_search和regex_replace接受一个正则表达式(样式)和一个字符串,并将该样式匹配的情况存储在 structmatch_results。 底下描述了match_results的使用情况: 参考:http://zh.wikipedia.org... 阅读全文
posted @ 2014-01-03 22:36
Tekkaman
阅读(3424)
评论(0)
推荐(0)
摘要:
【C++11散列表】 散列表对应于C++03中的hash_xxx,分为set和map两种 上述的类型将满足对一个容器类型的要求,同时也提供访问其中元素的成员函数:insert,erase,begin,end。 散列表需引入和两个头文件。参考:http://zh.wikipedia.org/wiki/C++0x#.E9.9B.9C.E6.B9.8A.E8.A1.A8 阅读全文
posted @ 2014-01-03 22:29
Tekkaman
阅读(1134)
评论(0)
推荐(0)
浙公网安备 33010602011771号