首页 > 编程语言 >C++11新特性系列

C++11新特性系列

时间:2022-11-16 11:12:05浏览次数:47  
标签:11 cout list 特性 initializer 77 values C++ print

C++11/14特性系列

1. variadic templates (可变参数模板)

// 需要处理最后一个无参的情况
void print( ){

}

template <typename... Types>
void print(const Types&... args){
    print("ss", args...);
}

// 可变参数模板 用于递归 (传参类型为包,可以不同)
template <typename T, typename... Types>
void print(const T &farg, const Types&... args){
    cout << farg << endl;
    print(args...);
}

2. auto 自动类型推导

int main( ){
    vector<int> f = {1, 2, 3, 4, 5};

    vector<int>::iterator ft;
    ft = f.begin( );
    auto it = f.begin( );
    // ft 和 it 都是迭代器,auto能够自动识别推导相应的类型,进行声明
    cout << *ft << endl;
    cout << *it << endl;
    return 0;
}

3. initializer_list<> 初始化列表

// 传递给 initializer_list,一定是 initializer_list 或者 {...} 形式
void print(std::initializer_list<int> vals){
    std::cout << "here\n";
    for (auto p = vals.begin( ); p != vals.end( ); ++p){
        std::cout << *p << "\n";
    }
}
print({1, 2, 3, 4, 5});
// --------------------------------------------------------
class P{
public:
    P(int a, int b){
        std::cout << "P(int, int), a = " << a << ", b = " << b << endl;
    }

    P(initializer_list<int> initlist){
        std::cout << "P(initializer_list<int>, values = ";
        for (auto i : initlist){
            std::cout << i << " ";
        }
        std::cout << std::endl;
    }
};

P p(77, 5);         // P(int, int), a = 77, b = 5
P q{77, 5};         // P(initializer_list<int>, values = 77 5
P r{77, 5, 42};     // P(initializer_list<int>, values = 77 5 42 
P s = {77, 5};      // P(initializer_list<int>, values = 77 5 

如果没有 P(initializer_list<int> initlist), 则 P q{77, 5} 会调用 P(int a, int b)

标签:11,cout,list,特性,initializer,77,values,C++,print
From: https://www.cnblogs.com/DL1024/p/16895187.html

相关文章

  • #yyds干货盘点#【愚公系列】2022年11月 微信小程序-实时音视频录制
    前言小程序的实时音视频播放需要先去微信开发者平台开通权限,「开发」-「接口设置」中自助开通该组件权限。类目属性如下:一级类目/主体类型二级类目小程序内容场景......
  • 11. 分页
    如果数据很多,我们不能将所有的数据一下传递给前端,通常的做法是通过分页进行展示在drf中为我们提供了一些分页的相关类BasePaginationPageNumberPagination(BasePaginat......
  • 2022-11-16 Unexpected end of JSON input
    vue+小程序,页面传参中的url路径有问题,导致传递过去后使用json.parse报错如题所示。原因:url中含有特殊字符无法被传递。解决方案:使用encodeURIComponent把参数编码,然后再......
  • 2022年09月09日-2022年09月11日 桐城
    中秋节这天,因为要加班,头一天回去,第二天早上就得回南京了。这次回去跟宝宝还有家人们一起过了一个中秋节,很热闹,每逢佳节倍思亲啊,隔日我便回南京了,宝宝则回太湖了,虽然这次相......
  • C++中::和:, .和->的作用和区别
    符号::和:的作用和区别::是作用域运算符,A::B表示作用域A中的-名称B,A可以是名字空间、类、结构;类作用域操作符“::”指明了成员函数所属的类。如:M::f(s)就表示f(s)是......
  • c++常用string函数转载
    转载地址:https://blog.csdn.net/weixin_45313447/article/details/114318554?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166856136316800182722804%2522%2......
  • 11.15 解题报告
    T1考场用时:\(40\)min期望得分:\(30\)pts实际得分:\(30\)pts这题以前做过。首先显然的一点是小Y行走的路径是一棵树,这题可以分两部分来做,首先对于每一个节点按照节......
  • L10U5-4 Responding to a compeitiors challenge 20221116
    1ReadingASWOTanalysisReadthearticleaboutaSWOTanalysisandanswerthequestions.S==>StrengthsW==>WeaknessesO==>OpportunitiesT==>ThreatsS......
  • Python 文本文件拖上转自适应图片 - 学习笔记(2022.11.16)
    Python文本文件拖上转自适应图片功能:1、支持拖拽执行2、文本文件转为自适应尺寸图片1importre2importos3importsys4importtime5fromPI......
  • GL-Learning new words 20221115
    GLLearingnewwords20221115HowdoyoulearnnewwordsinEnglish?WhenIcomeacrossawordthatIdon'tknow,Idirectlycheckthepronunciationanddefini......