随笔分类 - C++/STL
C++ STL相关
摘要:控制C++的Stream的格式,主要有三种方法,操作flag、使用manipulator和使用stream的成员函数。Manipulatormanipulator本质是一个函数,但是由于Stream类对<<做了重载,所以可以使用<<调用manipulator,看起来十分赏心悦目。ostream& operator << (ostream& (*op)(ostream& strm)){ // ostream& (*op)(ostream&) - 返回值为ostream&, 参数类型为ostream&的一个
阅读全文
摘要:capacity - 容器的成员函数capacity()取得max_size - 容器的成员函数max_size()取得STL容器的capacity属性,表示STL在发生realloc前能允许的最大元素数,也可以理解为预分配的内存空间。例如一个vector<int> v的capacity为5,当插入第6个元素时,vector会realloc,vector内部数据会复制到另外一个内存区域。这样之前指向vector中的元素的指针、迭代器等等均会失效。max_size属性和capacity不同,表示STL容器允许的最大元素数,通常,这个数是一个很大的常整数,可以理解为无穷大。这个数目与平
阅读全文
摘要:现在,C++有如下智能指针,除了auto_ptr外,其他都是11标准引入的。所有的智能指针都是模板化(class template)的。so,可以使用xxxx_ptr<T>的形式来满足不同的数据类型。unique_ptrsmart pointer with unique object ownership semantics只能有一个主人的指针,可以用于STL容器shared_ptrsmart pointer with shared object ownership semantics可共享的指针weak_ptrweak reference to an object managed
阅读全文
摘要:transaction safe即commit-or-rollback,在数据库里很常见。如果一个操作是事务安全的,即表示:在执行操作时发生意外导致操作没有完成,该操作所有已经完成的修改均会自动撤销。在C++中,上文所述的“意外”是指异常,如果一个操作不会抛出异常,那么它是永远“成功执行”的(设计者这么看,使用不当会发生不可预期后果),这样的操作不涉及事务安全。STL在guarantee和性能之间更倾向于后者,不完全保证事务安全。STL容器分为两类node-based: 以指针连接各节点。 有以下容器:list, set, multiset, map, multimap 不涉及事务安全:销..
阅读全文

浙公网安备 33010602011771号