( 原书第四章,General Concepts)

只介绍新内容,关于头文件格式和后缀等C++03已经规范化的内容,不再赘述。

  • namespace std:新的std子空间包括:

    • std::tr1, tr1 = technical report 1;
    • std::rel_ops, 用==和<运算实现所有比较运算的operator定义;
    • std::chrono, 精度无关的时间库chrono的名字空间;
    • std::placeholders, bind模板的占位符名字空间;
    • std::regex_constants, 指定regex类型和特性的常数的名字空间;
    • std::this_thread, 提供特定线程信息的全局线程函数的名字空间;
  • 错误和异常处理:string的错误处理非常细致,而stl和valarry更倾向于时间优化,所以基本不检查逻辑错误。
  • 可调用对象(Callable Objects):通过某种方式可以调用某种功能的对象,包括函数,(成员)函数指针,函数对象和lambda。
void func(int x, int y);
auto l = [](int x, int y){...};
class C {
public:
void operator()(int x, int y);
void memfunc(int x, int y);
} int main()
{
C c;
std::shared_ptr<C> sp(new C);
std::bind(func, , )(); // 注意(); func(3, 7)
std::bind(C(), , )(); // C()(3, 7);
std::bind(l, , )(); //l(3, 7);
std::bind(&C::memfunc, c, , )(); // c.memfunc(3, 7);
std::bind(&C::memfunc, sp, , )(); // sp->memfunc(3, 7); //async 表示后台线程执行
std::async(func, , ); // 注意(); func(3, 7)
std::async(c, , ); // c.operator()(3, 7);
std::async(l, , ); //l(3, 7);
std::async(&C::memfunc, &c, , )(); // c.memfunc(3, 7);
std::async(&C::memfunc, sp, , )(); // sp->memfunc(3, 7);
}
  • 并发和多线程:C++11在语言层面和标准库上,对并发编程都提供了很好的支持。下列前两点为核心语言层的支持。

    • 新的内存模型,独立更新两个不同线程中的不同对象是互相独立的。奇怪了,独立对象在不同的线程中怎么可能会有访问冲突?详情请看这里
    • thread_local关键字的引入,就是线程局部存储,Windows中的TLS系列函数或者Linux下的pthread_key_t;
    • 与线程安全性相关的一些保证;
      • 多个线程共享一个库对象,并且至少一个线程要修改它,可能会导致未定义行为;
      • 一个线程正在构造对象,而另一个对象已经开始使用它,或者一个线程还在使用对象,而另一个线程已经开始析构它了,都会导致未定义行为。
      • STL容器和容器适配器提供两点保证:1, 只读的并发访问是安全的; 2, 对于同一容器中的不同元素进行访问是安全的,vector<bool>除外(因为它是通过代理对象实现的。)
      • 与stdio同步的标准流的并发访问是安全的。但是,stringstream, file stream或者stream buffer, 并发访问的行为未定义。
      • atexit()和at_quick_exit()的并发调用会被同步。new,terminate或者unexpected的handler也会被同步。getenv()也是同步的。
    • 支持并发函数库和类库(线程启动和同步,第18章介绍);
  • allocator的简要介绍:它是某种特定内存解决方案的基础,比如共享内存,垃圾回收和面向对象数据库。关于默认的allocator,可参考《C++标准程序库》chapter 15.

C++11的一般概念——The C++ standard library, 2nd Edition 笔记(二)的更多相关文章

  1. C++11新特性——The C++ standard library, 2nd Edition 笔记(一)

    前言 这是我阅读<The C++ standard library, 2nd Edition>所做读书笔记的第一篇.这个系列基本上会以一章一篇的节奏来写,少数以C++03为主的章节会和其它 ...

  2. C++学习书籍推荐《The C++ Standard Library 2nd》下载

    百度云及其他网盘下载地址:点我 编辑推荐 经典C++教程十年新版再现,众多C++高手和读者好评如潮 畅销全球.经久不衰的C++ STL鸿篇巨著 C++程序员案头必 备的STL参考手册 全面涵盖C++1 ...

  3. C++ Standard Library

    C++ Standard Library *注:内容主要是对參考1的学习记录.知识点与图片大都来源于该书, 部分知识点与图片来源于參考2. 详细參考信息,见最下方參考. * C++98中新支持的语言特 ...

  4. [译]The Python Tutorial#11. Brief Tour of the Standard Library — Part II

    [译]The Python Tutorial#Brief Tour of the Standard Library - Part II 第二部分介绍更多满足专业编程需求的高级模块,这些模块在小型脚本中 ...

  5. 【概念的辨异】—— ISO C 与 POSIX C(C standard library 与 C POSIX library)

    ISO C 表示 C Standard Library,也就是 C 标准库. 二者的主要区别在于: POSIX 是 C 标准库的超集(也即是从内容上,C 标准库是 POSIX 库的一部分,POSIX ...

  6. Python Standard Library

    Python Standard Library "We'd like to pretend that 'Fredrik' is a role, but even hundreds of vo ...

  7. [译]The Python Tutorial#10. Brief Tour of the Standard Library

    [译]The Python Tutorial#Brief Tour of the Standard Library 10.1 Operating System Interface os模块为与操作系统 ...

  8. c++学习书籍推荐《Beyond the C++ Standard Library》下载

    百度云及其他网盘下载地址:点我 作者简介 Björn Karlsson works as a Senior Software Engineer at ReadSoft, where he spends ...

  9. The Python Standard Library

    The Python Standard Library¶ While The Python Language Reference describes the exact syntax and sema ...

随机推荐

  1. python入门-类(一)

    1 最简单的一个类 class Dog(): """一次模拟小狗的简单尝试""" def __init__(self,name,age): ...

  2. Spring 配置 web.xml (防止spring 内存溢出)

    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" " ...

  3. 表格(table)

    Title 主机名 端口 操作 1111 10023 查看详情 修改 表头1 表头1 表头1 表头1 1 1 1 1 1 1 1 1 1 <!DOCTYPE html><html l ...

  4. python模块说明

    1.模块(变量,函数,类,实现一个功能) 包:用来从逻辑上组织模块,本质是一个目录(必须带有__init__.py) 2.导入方法 import module_alex from module_ale ...

  5. kafka相关资料

    先来说一下Kafka与RabbitMQ的对比: RabbitMQ,遵循AMQP协议,由内在高并发的erlanng语言开发,用在实时的对可靠性要求比较高的消息传递上. kafka是Linkedin于20 ...

  6. DateJsonValueProcessor日期处理

    package com.zjx.controller; import java.text.SimpleDateFormat; import net.sf.json.JsonConfig; import ...

  7. 显示Audio CD的音轨时间

    uses   MMSystem; procedure TForm1.Timer1Timer(Sender: TObject);var  Trk : Word;  Min : Word;  Sec : ...

  8. 扩展C#与元编程(一)

    众所周知,Roslyn project已经开源一年多了.简单的说,Roslyn是:1)用C#/VB写的C#/VB的编译器,以及与IDE集成:2)编译器的功能以API的方式暴露出来(即一组DLL). R ...

  9. 求数组中的逆序对的数量----剑指offer36题

    在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数: 如数组{7,5,6,4},逆序对总共有5对,{7,5},{7,6},{7, ...

  10. javascript 函数对象

    http://hi.baidu.com/gdancer/blog/item/a59e2c12479b4e54f919b814.html jQuery的一些写法就是基于这篇文章的原理的..     函数 ...