C++

STL 的 push 和 emplace

前言 std::queue::emplace std::deque::emplace_back std::allocator_traits::construct std::allocator std::deque::allocator std::queue::push std::deque::push_back std::vector 的 emplace_back 和 push_back 产生时间 类型的构造函数不止 1 个 效率 std::map 的 emplace 和 insert 其他参考 前言 下面的说明以 STL 的 queue 为实例,其他 STL 还有 push_back/emplace_back 等,各自的影响不尽

string

find vs find_first_of find 函数原型 // c++11 string (1) size_t find (const string& str, size_t pos = 0) const noexcept; c-string (2) size_t find (const char* s, size_t pos = 0) const; buffer (3) size_t find (const char* s, size_t pos, size_type n) const; character (4) size_t find (char c, size_t pos = 0) const noexcept; find_first_of 函数原型 // c++11 string (1) size_t find_first_of

using 关键字

1 对命名空间的 using 指令 命名空间 using 指令 2 对命名空间成员的 using 声明 3 对类成员的 using 声明 4 类型别名与别名模板声明 参考 1 对命名空间的 using 指令 命名空间 命名空间

vector 的 resize 和 reserve

resize 原型 void resize (size_type n); void resize (size_type n, const value_type& val); resize 方法(传递参数来构造是一样的)调整容器大小使得包含 n 个元素 如果当前大小大于 n,会从尾部删除多余的元素 如果当前大

关于 boost 库

使用对应功能需要的库 apt-get install mpi-default-dev安装 mpi 库 apt-get install libicu-dev支持正则表达式的 UNICODE 字符集 apt-get install python-dev需要 python

关于 const

1 常量正确性(const correctness) 1.1 概述 1.2 const 和 * 1.3 const 和 & 1.4 成员函数 2 二重指针 3 修改 const 4 X->const X 5 reference 1 常量正确性(const correctness) 1.1 概述 常量正确性:即使用关键

关键字 extern 在 C 语言的使用

前言 变量或函数的声明和定义 声明和定义全局变量的最好方式 关键点 1:可以声明多次但初始化一次 关键点 2:默认存储类是 extern 关键点 3:extern 变量或

内联

描述 术语和定义 编译单元 单定义规则 内联声明 非成员函数 成员函数 不适合内联替换的用法 C/C++ static/extern + inline C89/90 inline C99 inline C++ inline GCC 编译选项 内联函数对安全性和速度的取舍 inline vs

可重入性

常见的线程不安全函数和对应的 unix 下的线程安全函数 保持跨越多个调用状态的函数 rand,对应 rand_r strtok,对应 strtok_r 返回指向静态变量的指针的函数 as

异常

为什么使用异常 C++ 使用异常 使用异常的反对观点 替代方案:通过判断或函数返回值检查错误 使用 try/catch/throw 而不是条件判断和返回错误码来改善软件质量 异常便于传递错