美文网首页
C++ 11 语言特性介绍

C++ 11 语言特性介绍

作者: 特立独行的佩奇 | 来源:发表于2022-09-28 22:07 被阅读0次

    C++ 11 语言特性

    新特性 说明
    nullptr,auto NA
    for-each 区间迭代
    shared_ptr unique_ptr 智能指针
    condtion_variable,mutex,lock 语言级线程支持
    map,set,multimap,multiset 有序容器
    unordered_map,unordered_set,unordered_multiset, unordered_multimap 无序容器
    list,forward_list 链表
    queu,stack 队列,栈
    array,vector 容器
    TBD lamda表达式

    nullptr介绍

    nullptr 的出现是为了代替NULL,比如下面的两个重载的函数

    void demoFunction(int t) {
        cout << "Run para as int" << endl;
    }
    
    void demoFunction(char* t) {
        cout << "Run para as char*" << endl;
    }
    

    如果调用demoFunction(NULL),某些编译将NULL定义为(void)0,这就会产生歧义;
    如果调用 demoFunction(nullptr) 就一定会调用到 demoFunction(char
    t)

    auto类型推导,区间迭代

    auto 可以推导任意基本类型,还可以作为函数的返回值;但是下面场景不能使用auto

    • 函数的参数不能使用auto
    • auto 不能推导出数组类型
    //error auto Add(auto a, auto b)
    auto Add(uint16_t a, uint16_t b) {
        return a + b;
    }
    
    auto index = 8;
    auto str = "HelloWorld";
    auto ret = Add(1, 2);
        
    cout << "index:" << index << " str: " << str << " ret:" << ret << endl;
    //auto array[] = {1,2,3,4} // error auto cannot as array
    

    区间迭代可以用于容器类型,数组类型的遍历操作;可以大幅度简化代码
    示例代码

        //basic usage
        for (uint8_t i = 0; i < sizeof(array)/sizeof(uint16_t); i++) {
            cout << "array[" << static_cast<int>(i) << "] = " << array[i] << endl;
        }
        for (auto t : array) {
            cout << t << endl;
        }
        for (auto &t : array) {
            cout << t << endl;
        }
    
    

    TBD

    相关文章

      网友评论

          本文标题:C++ 11 语言特性介绍

          本文链接:https://www.haomeiwen.com/subject/vyqhartx.html