C++11的一些新特性
3.1.9崭新的Template特性
Variadic Template 可变参数模板
void print()
{
} template <typename T, typename… Types>
void print (const T& firstArg, const Types&… args)
{
std::cout<<firstArg<<std::endl;
print(args);
}
如上,如果传人1或多个实参,上述的function template就会被调用,区分第一个实参,允许第一实参被打印,然后递归调用print()并传入其余实参。必须提供一个nontemplate重载函数print(),才能结束整个递归动作。
Alias Template 带别名的模板
template <typename T>
using Vec = std::vector<T,MyAlloc<T>>;
后,可以这样声明:
Vec<int> coll;
reference wrapper
官方的解释是这样的:
Class that emulates a reference to an element of type T, but which can be copied (it is both copy-constructible and copy-assignable).
实例:
std::vector<std::reference_wrapper<Item>> books; // elements are references
Item f("Faust",12.99);
books.push_back(f); // insert book by reference
for (const auto& book : books) {
std::cout << book.get().getName() << ": "
<< book.get().getPrice() << std::endl;
}
注意book.get().getName(),循环体中book被声明为处理“类型为Item&”的元素,用它直接调用成员函数前要调用get()。
C++11开始支持数组的begin和end,具体用法为:
int ia[]={,,,,,,,};
int *b=begin(ia);
int *e=end(ia);
C++11的一些新特性的更多相关文章
- (数据科学学习手札139)geopandas 0.11版本重要新特性一览
本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,就在几天前,geopandas ...
- kafka 幂等生产者及事务(kafka0.11之后版本新特性)
1. 幂等性设计1.1 引入目的生产者重复生产消息.生产者进行retry会产生重试时,会重复产生消息.有了幂等性之后,在进行retry重试时,只会生成一个消息. 1.2 幂等性实现1.2.1 PID ...
- RAC 11.2的新特性
网格即插即用(GPnP) 网格即插即用帮助管理员来维护集群,以前增加或删除节点需要的一些手动操作的步骤现在可以由GPnP来自动实现. GPnP不是一个单独的概念,它依赖于以下特性:在一个XML配置文件 ...
- Mysql8.0.11简介,新特性
MySQL 8.0 正式版 8.0.11 已发布,官方表示 MySQL 8 要比 MySQL 5.7 快 2 倍,还带来了大量的改进和更快的性能! 注意:从 MySQL 5.7 升级到 MySQL 8 ...
- jdk 9 10 11 12 13 新特性
jdk 9 新特性 1.集合加强 jdk9 为所有集合(List/Set/Map)都增加了 of 和 copyOf 方法,用来创建不可变集合,即一旦创建就无法再执行添加.删除.替换.排序等操作,否则将 ...
- C# 11 的这个新特性,我愿称之最强!
前言 在日常开发中我们经常会将JSON.XML.HTML.SQL.Regex等字符串拷贝粘贴到我们的代码中,而这些字符串往往包含很多的引号",我们就必须将所有引号逐个添加转义符\进行转义.这 ...
- C++11的模板新特性-变长参数的模板
这个特性很赞,直接给例子吧,假如我要设计一个类,CachedFetcher内部可能使用std::map也可能使用std::unordered_map,也可能是其它的map,怎么设计呢?没有C++11变 ...
- C++11 带来的新特性 (4)—— 匿名函数(Lambdas)
1 语法 Lambdas并不是新概念,在其它语言中已经烂大街了.直接进入主题,先看语法: [ captures ] ( params ) specifiers exception attr -> ...
- C++11/14的新特性——更简洁
新的字符串表示方式——原生字符串(Raw String Literals) C/C++中提供了字符串,字符串的转义序列,给输出带来了很多不变,如果需要原生义的时候,需要反转义,比较麻烦. C++提 ...
随机推荐
- CGCS2000 VS WGS84
- vmware vcenter appliance dhcp 改为 静态IP导致web service认证失败
参考 http://www.davidhill.co/2012/09/failed-to-connect-to-vmware-lookup-service/ Failed to connect to ...
- rpmdb出问题,重建rpmdb库
1.备份原库 tar cvzf rpmdb-backup.tar.gz /var/lib/rpm 2.删除rpmdb库 rm -f /var/lib/rpm/__db.00* 3.重建库 rpm -- ...
- 从零开始攻略PHP(8)——面向对象(下)
8.编写代码类 每个分离的函数可以执行一个明确的任务.任务越简单,编写与测试这个函数就越简单,当然也不要将这个函数分得太小——若将程序分成太多的小个体,读起来就会很困难. 使用继承可以重载操作.我们可 ...
- Lintcode: Sort Letters by Case
Given a string which contains only letters. Sort it by lower case first and upper case second. Note ...
- C++Builder 笔记
1.界面窗口如何不显示标题栏? 在Form属性栏里面把BorderStyle的值设为None 2.wchar_t wchar_t是C/C++的字符类型,是一种扩展的存储方式,wchar_t类型主要用在 ...
- c# 隐藏 控制台应用程序
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- Python学习总结11:获取当前运行类名和函数名
一. 使用内置方法和修饰器方法获取类名.函数名 1. 外部获取 从外部的情况好获取,可以使用指向函数的对象,然后用__name__属性. def a(): pass a.__name__ 或者 get ...
- ACdream 1128 Maze(费用流)
题目链接:http://acdream.info/problem?pid=1128 Problem Description wuyiqi陷入了一个迷宫中,这个迷宫是由N*M个格子组成的矩阵.每个格子上 ...
- Codeforces Beta Round #93 (Div. 1 Only) D. Fibonacci Sums
先考虑一个斐波那契数能分成其他斐波那契数的方案,假如f[i]表示第i个斐波那契数,那么只要对他进行拆分,f[i-1]这个数字必定会存在.知道这一点就可以进行递推了.先将数字分成最少项的斐波那契数之和, ...