C++2.0(C++11) 笔记 二

简介: C++2.0(C++11) 笔记 二

Variadic Template

#include<iostream>
using namespace std;
void printX(){
}
template<typename T , typename... args>
void printX(const T& f1 , const args&... f2){
    cout << f1 << endl;
    printX(f2...);
}
int main(){
    printX(22 , "hello" , 23 , 24 , 25);
    return 0;
}
// 如果想知道传进来的这一包东西有几个,  可以使用sizeof...(args);

例二: 重写printf

void PrintX(const char* p){
    while(*p){
        if(*p == '%' && *(++p) != '%'){
        }
        cout << *p++;
    }
}
template<typename T , typename... Args>
void PrintX(const char* p , T type , Args... arg){
    while(*p){
        if(*p == '%' && *(++p) != '%'){
            cout << type << ' ' ;
            PrintX(++p , arg...);
            return;
        }
    }    
}
int main(){
    PrintX("%d%d%d" , 23 , 24 , 25);
    return 0;
}

第六种:   可以利用这种形式,到底要把哪几种类型组合成一包。这种做法非常的精简巧妙。   但是这么用会报错,直接写出它的类型即可。

 

可以用decltype类型推导

Rvalues references

右值是不可以出现在左边的,而什么是右值呢,最常见的就是临时对象。

这是一个不完美的转接。

如何设计一个具备移动语义意识的classs:

hashtable

hash function

Tuple

 

目录
相关文章
|
5月前
|
编译器 C语言 C++
C++一分钟之-C++11新特性:初始化列表
【6月更文挑战第21天】C++11的初始化列表增强语言表现力,简化对象构造,特别是在处理容器和数组时。它允许直接初始化成员变量,提升代码清晰度和性能。使用时要注意无默认构造函数可能导致编译错误,成员初始化顺序应与声明顺序一致,且在重载构造函数时避免歧义。利用编译器警告能帮助避免陷阱。初始化列表是高效编程的关键,但需谨慎使用。
66 2
|
5月前
|
算法 C++
算法笔记:递归(c++实现)
算法笔记:递归(c++实现)
|
6月前
|
存储 编译器 C语言
从C语言到C++_34(C++11_下)可变参数+ lambda+function+bind+笔试题(下)
从C语言到C++_34(C++11_下)可变参数+ lambda+function+bind+笔试题
90 5
|
5月前
|
编译器 C++
《Effective C++ 改善程序与设计的55个具体做法》 第一章 笔记
《Effective C++ 改善程序与设计的55个具体做法》 第一章 笔记
|
3月前
|
C++ 容器
【C/C++笔记】迭代器
【C/C++笔记】迭代器
23 1
|
3月前
|
存储 安全 程序员
【C/C++笔记】迭代器范围
【C/C++笔记】迭代器范围
64 0
|
4月前
|
C++ Windows
FFmpeg开发笔记(三十九)给Visual Studio的C++工程集成FFmpeg
在Windows上使用Visual Studio 2022进行FFmpeg和SDL2集成开发,首先安装FFmpeg至E:\msys64\usr\local\ffmpeg,然后新建C++控制台项目。在项目属性中,添加FFmpeg和SDL2的头文件及库文件目录。接着配置链接器的附加依赖项,包括多个FFmpeg及SDL2的lib文件。在代码中引入FFmpeg的`av_log`函数输出"Hello World",编译并运行,若看到"Hello World",即表示集成成功。详细步骤可参考《FFmpeg开发实战:从零基础到短视频上线》。
137 0
FFmpeg开发笔记(三十九)给Visual Studio的C++工程集成FFmpeg
|
3月前
|
存储 程序员 C++
【C++小知识】基于范围的for循环(C++11)
【C++小知识】基于范围的for循环(C++11)
|
3月前
|
编译器 C语言 C++
【C++关键字】指针空值nullptr(C++11)
【C++关键字】指针空值nullptr(C++11)
|
3月前
|
存储 编译器 C++
【C++关键字】auto的使用(C++11)
【C++关键字】auto的使用(C++11)

相关实验场景

更多
下一篇
无影云桌面