1、列表初始化
C++11扩大了用大括号括起的列表(初始化列表)的使用范围,使其可用于所有的内置类型和用
户自定 义的类型,使用初始化列表时,可添加赋值号(=),也可以不添加。
#include<iostream>
#include<vector>
#include<map>
using namespace std;
class ClassNum {
public:
ClassNum(int n1 = 0, int n2 = 0) : _x(n1), _y(n2){}
private:
int _x;
int _y;
};
int main() {
int num1 = { 100 }; //定于内置类型
int num2(3); //也可以不加=
int num3{ 3 };
//数组
int arr1[5] = { 1,3,4,5,6 };
int arr2[] = { 4,5,6,7,8 };
int arr3[] { 4,5,6,7,8 };
//STL中的容器
vector<int> v{ 12,2 };
map<int, int> mp{ {1,2},{3,4} };
//自定义类型初始化
ClassNum q(1, 2);
ClassNum p{ 1, 2 };
return 0;
}
2、For each
vector<int> v1={ 1,2,3,4,5,6 };
for (auto i : v1)//范围for
{
cout << i << “ ”;
}
3、move 语义
用 = 赋值,会调用拷贝构造函数进行拷贝。
#include <iostream>
#include <vector>
using namespace std;
class XData {
public:
int id;
XData(int id=0) {
this->id = id;
cout << id<<" create" << endl;
}
~XData() {
cout << id<<" drop" << endl;
}
XData(const XData& xd) {
id = xd.id;
cout << "copy" << endl;
}
};
int main() {
vector<XData> datas(3);
auto ds = datas;
cout << "datas size: " << datas.size()<<endl;
}
用move之后,datas的size变为0,不进行拷贝。
#include <iostream>
#include <vector>
using namespace std;
class XData {
public:
int id;
XData(int id=0) {
this->id = id;
cout << id<<" create" << endl;
}
~XData() {
cout << id<<" drop" << endl;
}
XData(const XData& xd) {
id = xd.id;
cout << "copy" << endl;
}
};
int main() {
vector<XData> datas(3);
auto ds = move(datas);
cout << "datas size: " << datas.size()<<endl;
}
4、可变参数模版
C++11的新特性可变参数模板能够创建可以接受可变参数的函数模板和类模版。
#include <iostream>
using namespace std;
void funcName1() {
//cout << "递归终止函数" << endl;
}
template<class T, class...U>
void funcName1(T frist, U...others) {
cout << "收到的参数值:" << frist << endl;
funcName1(others...);//注意这里传进来的是一包形参不能省略...
}
template<class T,class...U>
void funcName2(T first, U...args) {
cout << "收到的参数值:" << first << endl;
//c++17中新增一个语句叫做编译期间if语句( constexpr if)
if constexpr (sizeof...(args)) {//constexpr代表的是常量的意思或者是编译时求值
funcName2(args...);
}
}
int main() {
//funcName1(1, 2, 3, 4, 5, 6);
funcName2(1, 2, 3, 4, 5, 6);
return 0;
}
6264

被折叠的 条评论
为什么被折叠?



