( 原书第四章,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. attack source code

    不废话,直接上代码, 先看截图use pictures;

  2. vim编程设置

    在终端下使用vim进行编辑时,默认情况下,编辑的界面上是没有显示行号.语法高亮度显示.智能缩进 等功能的.为了更好的在vim下进行工作,需要手动设置一个配置文件:.vimrc.在启动vim时,当前用户 ...

  3. 0_Simple__simpleVoteIntrinsics + 0_Simple__simpleVoteIntrinsics_nvrtc

    介绍了线程束表决函数的实例(其概念介绍见 http://www.cnblogs.com/cuancuancuanhao/p/7841512.html),并在静态和运行时编译两种条件下进行使用. ▶ 源 ...

  4. require.js 学习基础

    RequireJS 是一个JavaScript模块加载器,他的目标是鼓励代码的模块化,它使用了不同于传统<script>标签的脚本加载步骤.可以用它来加速.优化代码,但其主要目的还是为了代 ...

  5. java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()L

    mybatis与springboot集成的时候,报错:java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManag ...

  6. UI5-文档-4.27-Mock Server Configuration

    我们只是在一个真实的服务上运行我们的应用程序,但是对于开发和测试我们的应用程序,我们不希望依赖于“真实”服务的可用性,或者在数据服务所在的系统上增加额外的负载. 这个系统就是所谓的后端系统,我们现在将 ...

  7. UI5-文档-4.23-Custom Formatters

    如果希望对数据模型的属性进行更复杂的格式化逻辑,还可以编写自定义格式化函数.现在我们将使用自定义格式化程序添加本地化状态,因为数据模型中的状态是一种相当技术性的格式. Preview A status ...

  8. form表单中的encType属性

    enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码,它有三个值 1.application/x-www-form-urlencoded:表单数据被编码为名称/值对.这是默认的编码方式 ...

  9. Inspector视图中的get/set使用

    using UnityEngine; using System.Collections; public class Test : MonoBehaviour { public int width { ...

  10. sharepoint 调查问卷权限设置

    参考网址:http://www.cnblogs.com/mybi/archive/2011/04/18/2019935.html 按文章设置后发现访问时提示没有权限. 于是把新权限(问卷回复)的权限组 ...