C/Cpp / STL
Ruo_Xiao
己所不欲,勿施于人。
展开
-
C/Cpp / STL / 类型萃取
作用类型萃取使用模板技术来萃取类型(包含自定义类型和内置类型)的某些特性,用以判断该类型是否含有某些特性,从而在泛型算法中来对该类型进行特殊的处理用来达到提高效率或者其他的目的。实例说明这里采用的实例是 STL 的 destroy() 函数的实现,原型如下图所示:(stl_contruct.h)该函数的作用是析构[ first , last ) 范围内的对象。这里面就有个...原创 2020-03-08 09:28:02 · 278 阅读 · 0 评论 -
C/Cpp / STL / vector 释放内存的方案
std::vector<T> vSum;答案1、当 T 为指针时,释放内存的代码如下:std::vector<T>().swap(vSum);2、当 T 为原生类型(int、float、char)时,释放内存的代码如下:std::vector<T>().swap(vSum);3、当 T 为类对象时,释放内存的代码如下:vSum...原创 2020-03-07 21:30:35 · 697 阅读 · 0 评论 -
C/Cpp / STL / map 的 key 为自定义的 struct 或者 class 时,有什么注意事项?
答案:需要重载 struct 和 class 的 operator < 。原因:因为 map 的底层是 RBTree,而 RBTree 的比较函数为如下图所示:而该类来自于 map 中向 RBTree 传入的比较函数,如下图所示:less<Key>的函数源代码如下所示:如果,Key 为 struct 或者 class 时,就需要重载 opera...原创 2020-02-12 12:05:41 · 227 阅读 · 0 评论 -
C/Cpp / STL / vector 的 erase 会造成当前位置和之后的迭代器失效的疑问
erase 其中一种实现(来源:cygnus 2.91.57,github:https://github.com/xuchanglong/Cygnus-comments) iterator erase(iterator position) { if (position + 1 != end()) copy(position + 1, ...原创 2020-02-25 22:17:55 · 456 阅读 · 0 评论 -
C/Cpp / STL / map 和 set 的不同点和相同点。
1、节点类型(1)map,节点保存的内容是 key 和 value 。(2)set,节点保存的是 key。当然,理解成 value 亦可。这里说 key,是因为代码中写的是 key 。2、其他(1)set,集合。包含了经过排序了的数据,这些数据的值 (value)必须是唯一的(因为红黑树需要按照 value 进行判断大小)。(2)map,映射,即:从 key 到 value 的映...原创 2020-02-27 13:35:39 · 482 阅读 · 0 评论 -
C/Cpp / STL / 各个实现版本的说明
1994年,STL(Standard Template Library)进入了C++标准库,各个C++编译器厂商依照标准所描述的原型去实现C++ STL。主要版本如下:HP STLHP STL是 Alexandar Stepanov 在惠普 Palo Alto 实验室工作时,与Meng Lee合作完成的。HP STL 是 C++ STL 的第一个实现版本,而且是开放源码。其它版本...原创 2019-12-07 07:46:41 · 554 阅读 · 0 评论 -
C/Cpp / STL / 模板全特化和偏特化
栗子#include <iostream>template <typename T>struct Test{ void Print() { std::cout << "当前型别是 T 。" << std::endl; }};template <> struct Test<int> // 模板特化...原创 2020-03-07 18:31:41 · 307 阅读 · 0 评论