聊城专业做网站,好的网站怎么设计师,装修效果图实景案例,中等职业学校示范建设专题网站5 三个C11新特性
5.1 variadic templates
模板参数可变化#xff0c;其语法为 ... (加在哪看情况)
// 当参数pack里没有东西了就调用这个基本函数结束输出
void print() {
}// 用于打印多个参数的可变参数模板函数
template typename T, typename... Args
void pri…5 三个C11新特性
5.1 variadic templates
模板参数可变化其语法为 ... (加在哪看情况)
// 当参数pack里没有东西了就调用这个基本函数结束输出
void print() {
}// 用于打印多个参数的可变参数模板函数
template typename T, typename... Args
void print(const T first, const Args... args) {std::cout first ;print(args...); // 使用剩余参数进行递归调用
}int main() {print(1, Hello, 3.14, World);return 0;
}
还可以使用 sizeof...(args) 来得到参数pack里的数量
5.2 auto
编译器通过赋值的返回值类型自动匹配返回类型 注下面这样是不行的第一行编译器找不到返回值类型
auto ite; // error
ite find(c.begin(), c.end(), target);5.3 ranged-base for
for 循环的新语法for(声明变量 : 容器)编译器会从容器中依次拿出数据赋值给声明变量中
for (decl : coll)
{statement
}//例
for (int i : {1, 3, 4, 6, 8}) // {xx,xx,xx} 也是c11的新特性
{cout i endl;
}注意改变原容器中的值需要 pass by reference
vectordouble vec;
...for (auto elem : vec) //值传递
{cout elem endl;
}
for (auto elem : vec) //引用传递
{elem * 3;
}