C++标准库介绍

参考文献

  • 《C++标准库》
  • 《C++Primer》
  • 《C++ STL使用例子大全》

1 C++ 语言新特性

nullptr

  • 取代NULL。用于防止0指针出现的歧义

auto自动完成类型推导

一致性初始化与初值列表

  • 可以使用大括号,完成所有的初始化。

范围for循环

constexpr常量表达式

Template特性

Lambda表达式

  • 没有参数和返回值的lambda表达式
C++ 复制代码
auto l=[]{
    cout<<"hello world"<<endl;
}
  • lambda表达式的定义完成后直接调用
C++ 复制代码
[]{ cout<<"helloworld"<<endl;}();
  • 有参数的lambda表达式

    auto l = [](int a,int b){cout<<a+b<<endl;};

  • 有返回值的lambda表达式

    auto l = [](int m,int n)->int{cout<<m+n<<endl;return m+n;};

decltype关键字

  • 让编译器找出表达式的类型。

    decltype(x+y)

新的函数声明方法

  • 使用参数列表后的箭头声明返回值的类型。与lambda表达式一致。

    template<typename T1,typename T2>
    decltype(x+y) add(T1 x,T2 y);

    template<typename T1,typename T2>
    auto add(T1 x,T2 y)->decltype(x+y);

新的基础类型

  • char16_t,char32_t
  • long long usigned long long
  • std::nullptr_t

2 一般概念

2.1 命名空间

使用方法

  • 直接指定标识符

    std::cout<<10<<endl;

  • 使用using declaration声明

    using std::cout;
    using std::endl;
    cout<<10<<endl;

  • 使用using directive。复杂的代码中容易导致冲突

    using namespace std;
    cout<<hex<<3.4<<endl;

2.2 头文件

复制代码
#include<iostream>
#include<string>

2.3 错误和异常处理

  • 标准错误和异常如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R5pydul5-1690856478763)(image/2021-03-05-17-30-07.png)

2.4 可被调用的对象

callable object。后边可以使用调用运算符()。

  • 一个函数。接受额外传入的args作为实参argument
  • 一个指向成员函数的指针。
  • 一个函数对象。(function object,重载了调用运算符operator())
  • 一个lambda表达式

2.5 并发与多线程

2.6 分配器Allocator

相关推荐
艾莉丝努力练剑5 小时前
【AI大模型接入SDK】Provider分析与实现
c++·人工智能·学习·面试·大模型·llm
丘山一郎12 小时前
Spring 中的IOC控制反转 和DI依赖注入
java·后端·spring
码视野12 小时前
基于 Spring Boot + Vue3 的【大学英语四六级 (CET-4/6) 作文智能评分与句式润色系统】设计与实现(含PRD/三端高保真源码/大屏)
java·前端·人工智能·spring boot·后端·vue3
MetaLite12 小时前
Spring-AOP自调用为什么失效-AopContext真能解决吗
java·后端·spring
大模型码小白12 小时前
AI 对话流性能调优:万级消息的虚拟滚动落地
java·大数据·前端·javascript·人工智能·算法·机器学习
m0_5474866613 小时前
《JavaScript核心原理 》全套PPT课件2026
开发语言·javascript·ecmascript
老当益壮梁奶奶13 小时前
Linux软件编程学习笔记(七):线程分离与线程间通信详解
linux·c语言·c++·笔记·学习
许彰午13 小时前
14-字段级SM4加密与SM2签名
java·低代码·架构
MC皮蛋侠客13 小时前
Tauri 2.x 系列(五):调用系统 API——官方插件、Rust crate 与原生能力
开发语言·后端·rust
布莱克60514 小时前
软中断和硬中断的区别
开发语言·操作系统