c++

auto_ptr, unique_ptr, shared_ptr and weak_ptr

auto_ptr unique_ptr shared_ptr weak_ptr reference auto_ptr C++11 已经弃用。unique_ptr是新的具有相似功能的智能指针,但是安全性更高。 auto_ptr是管理对象的指针,通过new的操作

C++ new

关于 new int() 和 new int[] #define LEN 100 int *arr1 = new int(LEN); int *arr2 = new int[LEN]; 第一行的代码arr1指向内存中int = 100的一个数的地址 第二行的代码arr2指向长度为 100 的数组的内

C++ string 转换大小写

#include <string> #include <algorithm> void CString::StringToUpper(std::string &str) { std::transform(str.begin(), str.end(), str.begin(), ::toupper); } void CString::StringToLower(std::string &str) { std::transform(str.begin(), str.end(), str.begin(), ::tolower); } 提示出错error: no matching function for call to ‘transform(__gnu_cxx::__normal_i

C++ 未定义的行为

UB(Undefined behavior):程序的行为没有限制。常见的未定义行为例子包括:数组访问内存越界,有符号数溢出,间接访问空指针,在一个表达式中无顺序多次

Effective C++, 3rd

1.让自己习惯 C++ 01.视 C++ 为一个语言联邦 02.常量,枚举和内联优于宏定义 03.尽可能使用常量 04.确定对象被使用前已先被初始化 2.构造/析构

hash map

class hash_map { hash_map() {set_load(); v.reserve(max_load*b.size());} // 表“太满”(如 75% 满)时性能会恶化 void set_load(float m=0.7, float g=1.6) {max_load=m; grow=g;} // 查找 mapped_type& operator[] (const key_type& k) { // 先计算散列值,查找表索引 size_type i = hash(k) % b.size(); // 找到之后遍历散列链匹配

lambda 表达式

问题 解决方法 返回类型 “捕获”变量 使用 lambda 作为变量 参考 问题 C++ 包含一些有用的通用函数,比如 std::for_each 和 std::transform

RAII 资源获取即初始化

概念 使用 RAII 例子 标准库 注解 参考 概念 资源获取即初始化(Resource Acquisition Is Initialization),或称 RAII,是一种 C++ 编程技术,它将必

sizeof vs strlen

sizeof strlen 总结 参考 sizeof sizeof 是编译时一元运算符,可用于计算运算元的大小 sizeof 作用于 unsigned int 时,结果一般表示为 size_t sizeof 可用于任何数据类型,包括基本类型(比如整型、浮点

STL

介绍 算法 头文件 algorithm 排序 搜索 重要的 STL 算法 未加工算法 加工算法 有用的 Array 算法 划分操作 头文件 valarray 容器 顺序容器 array vector deque forward_list list 容器适配器 stack queue priority_queue 关联容器 set multiset map multimap 无序