前言

  • 发现好多情况下都会用到c++11的新特性啊。
  • 所以稍稍总结一下,只会粗略的说,不会详细的讲……
  • upd.csp-s可能不是c++11标准,请慎用。(博主考试CE后的善意提醒)

1.auto&decltype

  • c++11新增关键字,类型推导。
  • 迭代器在之前必须写得很长,比如:
set<int>s;
set<int>::iterator it=s.begin();
  • 而c++11只需写成:
auto it=s.begin();
  • 但auto只能对变量而不能对表达式进行类型推导,所以又引入了decltype关键字。
  • decltype只会推导表达式的类型而不会算出数值。
auto a=233,b=666;
decltype (a+b) c;

2.constexpr

  • 常量表达式的修饰符。
  • 可修饰常量和函数。
  • 注意赋给常量的值必须是系统能够识别的,而不能是自定义的变量。
#include<bits/stdc++.h>
constexpr long long qwq(long long x){
return x*x;
}
int main(){
constexpr int a=;
return ;
}

3.nullptr

  • 空指针值,为了区分0和NULL。
  • 因为NULL的本质是0,所以就算把NULL赋给int也不会报错,但nullptr就不行,因为它只代表空指针。

4.tuple

  • 元组。
  • 相当于高级的pair,成员可为任意个。
  • 相关操作参考下面的代码。
#include<iostream>
#include<tuple>
using namespace std;
tuple<int,int,int>s=make_tuple(,,);//make_tuple:制造元组
int main(){
cout<<get<>(s)<<" "<<get<>(s)<<" "<<get<>(s)<<endl;//get:得到元组中的某位元素
int x,y,z;
tie(x,y,z)=s;//tie:拆元组
cout<<x<<" "<<y<<" "<<z<<endl;
tuple<int,long long>w=make_tuple(,4ll);
auto ws=tuple_cat(w,s);//tuple_cat:合并元组
cout<<get<>(ws)<<" "<<get<>(ws)<<" "<<get<>(ws)<<" "<<get<>(ws)<<" "<<get<>(ws)<<endl;
return ;
}

5.哈希容器

  • c++11新增了一些基于Hash的容器:
  • unorder_map,unorder_set,unorder_mulitmap,unorder_mulitset。
  • 性能比set,map等更优。

6.容器&数组遍历

  • 只能说非常方便,甚至可以遍历map……
#include<bits/stdc++.h>
using namespace std;
vector<int>s;
int a[];
int main(){
a[]=,a[]=,a[]=;
s.push_back(),s.push_back(1e9+),s.push_back();
for(auto &x:s)cout<<x<<" ";
puts("");
for(int &x:a)cout<<x<<" ";
puts("");
return ;
}

7.容器初始化

  • 可以像数组一样对容器进行初始化,包括map(为什么又拿map开刀……)。
map<int,int>mp{{233,1},{521,2}};

8.Lambda

  • 匿名函数。
  • 可以在使用时再定义函数,而不用费力起函数名。
  • 如sort:
#include<bits/stdc++.h>
using namespace std;
int a[];
int main(){
srand(time());
int n=;
for(register int i=;i<=n;++i)a[i]=rand();
sort(a+,a+n+,[](int skyh,int yxs){
return skyh>yxs;
});
for(register int i=;i<=n;++i)printf("%d ",a[i]);
return ;
}
  • 用法很灵活,非常好的特性。然而我对它理解不是非常透彻

9.mt19937

  • C++11引入,基于Mersenne twister算法实现的高质量随机数。
  • 得到的随机数在int范围内。
  • 据说比rand()函数快,不过实测时mt19937比rand还要慢一些……
  • 还是rand更快。
#include<random>
#include<cstdio>
using namespace std;
int main(){
//freopen("1.in","w",stdout);
mt19937 rd(time(NULL));
int n=rd()%+,m=rd()%+;
printf("%d %d\n",n,m);
return ;
}
  • upd.听从miemeng神的意见,顺便提一下random标准库吧。
  • 这是c++11新增的一个库,分为生成器和分布两大部分。
  • 其中有三种随机数生成引擎。
  • 第一种是线性同余生成引擎,第二种是Mersenne_twister算法(梅森旋转法)生成引擎,第三种是滞后Fibonacci算法生成引擎。
  • 线性同余最快,梅森旋转法效果最好。
  • 想更详细了解的话可以参照这篇博客:
  • https://blog.csdn.net/u010487568/article/details/51526337

10.尖括号

  • 可能你在打代码的时候没有注意,但这也是c++11的特性。
  • >>不再只被认为是流。
vector<pair<int,int>>s;//是合法的

最新文章

  1. hive 复杂类型
  2. java 解析xml
  3. IOCP I/O完成端口(了解)
  4. So easy Webservice 4.Java方式访问WebService(使用jdk1.6以上 wsimport命令)
  5. Computer Science Theory for the Information Age-4: 一些机器学习算法的简介
  6. IIS应用地址池监控
  7. Hibernate(八)一对多单向关联映射
  8. swipejs
  9. PHP Database ODBC 之 ODBC
  10. 项目管理Project
  11. jsp中${}
  12. CentOS修改root密码
  13. 百度map 3.0初探
  14. shell的case语句简述(shell的流控制)
  15. Linux - 设置Centos控制台模式的分辨率
  16. [转帖]迎战AMD 7nm 64核EPYC 英特尔至强也玩起了胶水以及性价比
  17. puppeteer新手遇到的坑
  18. JUC详解
  19. 洛谷 P4841 城市规划 解题报告
  20. Code--POJ1850

热门文章

  1. Synchronized底层优化(轻量级锁、偏向锁)(二)
  2. angular [NgClass] [NgStyle],NgIf,[ngSwitch][ngSwitchCase]
  3. PTA(Basic Level)1010.一元多项式求导
  4. Win10 开启 热点的简单办法
  5. 面试宝典:25个最经典的JavaScript面试题及答案
  6. SpringBoot_01
  7. 基于Caffe训练AlexNet模型
  8. day16 常用模块 sys os json pickle
  9. [.net core]9.中间件的具体实现
  10. IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(Application.StartupPath + &quot;\\temp&quot;, 0); 报:异常来自 HRESULT:0x80040228