C++11特性
来源:互联网 发布:mac select会员 编辑:程序博客网 时间:2024/06/05 15:30
C++11特性摘要
英文原版链接:http://codeforces.com/blog/entry/15643
一、"{}"赋值
vector<int> v; v = {1, 2, 3};pair<int, int> p; p = {1, 2};vector<pair<int, int> > vv; vv = {{1, 3}, {2, 4}};
注:不可用于stack、queue
二、打印变量名
三、可变参函数
二、打印变量名
#define what_is(x) cerr << #x << " is " << x << endl;<span style="font-family: Arial, Helvetica, sans-serif;">what_is(</span><span style="font-family: Arial, Helvetica, sans-serif;">a_variable</span><span style="font-family: Arial, Helvetica, sans-serif;">)</span><span style="font-family: Arial, Helvetica, sans-serif;">;</span>
// prints "a_variable is 376"
<pre name="code" class="cpp"><span style="font-family: Arial, Helvetica, sans-serif;">what_is(</span><span style="font-family: Arial, Helvetica, sans-serif;">a_variable * 2 + 1</span><span style="font-family: Arial, Helvetica, sans-serif;">)</span><span style="font-family: Arial, Helvetica, sans-serif;">;</span>// prints "a_variable * 2 + 1 is 753"
三、可变参函数
int sum() { return 0; }template<typename T, typename... Args>T sum(T a, Args... args) { return a + sum(args...); }int main() { cout << sum(5, 7, 2, 2) + sum(3.14, 4.89); } /* prints "24.03" */
四、auto变量访问容器内元素
set<int> s = {8, 2, 3, 1};for (auto it: s) cout << it << ' ';// prints "1 2 3 8"
also:
vector<int> v = {8, 2, 3, 1};for (auto &it: v) it *= 2;for (auto it: v) cout << it << ' ';// prints "16 4 6 2"
五、二维数组元素的打印
for(i = 1; i <= n; i++) { for(j = 1; j <= m; j++) { cout << a[i][j] << " \n"[j == m]; }}
六、make_tuple and emplace_back
#define mt make_tuple#define eb emplace_backint main(){ int a,b,c; tie(a,b,c) = mt(1,2,3); // assign tie(a,b) = mt(b,a); // swap(a,b) vector<pair<int,int>> v; v.eb(a,b); // shorter and faster than pb(mp(a,b))}
tie(args...)的使用:
tuple<int, int, int, char> t (3, 4, 5, 'g');int a, b;tie(b, ignore, a, ignore) = t;cout << a << ' ' << b << '\n';
七、函数的嵌套定义
格式:
[capture list](parameters) -> (return value) { body }
说明: Capture List: 通常省略即可
parameters: 形参的定义
return value: 返回值类型
body: 函数体
vector<int> v = {3, 1, 2, 1, 8}; sort(begin(v), end(v), [] (int a, int b) -> bool { return a > b; }); for (auto i: v) cout << i << ' ';
auto f = [] (int a, int b) -> bool { return a < b; }cout << f(1, 2); // prints "1"
vector<int> v = {3, 1, 2, 1, 8};sort(begin(v), end(v), [] (int a, int b) -> bool { return a > b; });for (auto i: v) cout << i << ' ';
0 0
- C+11 新特性
- [C++]C++11新特性
- 【C++】 C++11新特性
- 【C++】了解C++11新特性
- C++:C++11新特性详解(1)
- 【C++】C++11特性:lambda和function
- [C#] 白话C#:特性
- 【C/C++】C++11新特性:std::bind
- c#:特性和属性
- c#:定义特性
- 白话C#:特性
- 12c新特性
- C函数参数特性
- C++的特性
- Objective-C 语言特性
- Objective-C新特性
- Objective-C新特性
- objective -c 特性笔记
- JMeter使用技巧
- Android系统进程Zygote启动过程的源代码分析
- EXT JS 4.1.1带有锁定列locked的grid出现两列checkbox的问题
- 完成端口简介
- chrome免安装版制作
- C++11特性
- SQL 语句
- Java 8 简明教程
- Xcode 升级后,常常遇到的遇到的警告、错误,解决方法
- matlab字符串处理
- Java技术_每天掌握一种设计模式(002)_使用场景及简单实例(创建型:单例模式)
- PostgreSQL数据库Streaming Replication流复制主备延迟测试
- hadoop面试题整理(六)
- Java_JavaEE_SSH_hibernate向mysql插入数据引起中文乱码问题