
C++--STL/ATL
文章平均质量分 58
山西茄子
多媒体工程师,从事ffmpeg,gstreamer,视频编码,deepstream等开发,做做笔记。
展开
-
STL--string类的实现
标准模板库有个string类,用起来很方便,如下代码是一种实现。 #include using namespace std; class String { public: String(); ~String(); String(const String &rs); String(const char* const转载 2012-11-30 12:10:13 · 758 阅读 · 0 评论 -
STL函数
copytemplate OutIt copy(InIt first, InIt last, OutIt x);The template function evaluates *(x + N) = *(first + N)) once for each N in the range [0, last - first), for strictly increasing values转载 2014-05-07 15:27:18 · 719 阅读 · 0 评论 -
STL之Bitset
位运算在存储状态、模拟行动、搜索很多方面有着非常巨大的优势。构造函数bitset b; b有n位,每位都为0.参数n可以为一个表达式.如bitset b0;则"b0"为"00000"; bitset b(unsigned long u); b有n位,并用u赋值;如果u超过n位,则顶端被截除如:bitsetb0(5);则"b0"为"00101"; bitset转载 2015-04-20 10:40:12 · 494 阅读 · 0 评论 -
STL--map
struct ST{ ...}定义:map m_Map; 添加:typedef pair m_pair;m_Map.insert(m_pair(m_lConnectHandle, this));删除: map::iterator iter; iter = m_Map.find(m_lConnectHandle); if (iter !原创 2012-09-21 14:05:28 · 571 阅读 · 0 评论 -
hash
处理冲突链地址法这种方法的基本思想是将所有哈希地址为i的元素构成一个称为同义词链的单链表,并将单链表的头指针存在哈希表的第i个单元中,因而查找、插入和删除主要在同义词链中进行。链地址法适用于经常进行插入和删除的情况。例如,已知一组关键字(32,40,36,53,16,46,71,27,42,24,49,64),哈希表长度为13,哈希函数为:H(key)= key %转载 2015-06-11 10:53:10 · 687 阅读 · 0 评论 -
STL--stack
c++ stl栈stack介绍C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)的数据结构。c++ stl栈stack的头文件为: #include c++ stl栈stack的成员函数介绍操作 比较和分配堆栈empty() 堆栈为空则返回真pop() 移除栈顶元素push()转载 2016-12-20 17:04:42 · 361 阅读 · 0 评论 -
STL--vector
struct YU_INFO{ ...}定义vector m_Vector;插入 YU_INFO* pTemp = NULL; pTemp = new YU_INFO; //赋值 m_Vector.push_back(pTemp);遍历 for (vector::iterator itor = m_Vector.begin(); itor !=原创 2012-09-21 09:54:12 · 720 阅读 · 0 评论 -
STL--thread
void my_thread(){ puts("hello, world");}int main(int argc, char *argv[]){ std::thread t(my_thread); t.join(); system("pause"); return 0;}实例化一个线程对象t,参数my_thread转载 2017-09-11 22:03:19 · 723 阅读 · 0 评论 -
STL之queue
头文件#include struct xxx{ ...}定义 queue m_x;插入xxx a;m_x.push(a); 取出不删除xxx a = m_x.front();删除m_x.pop();原创 2014-05-08 16:44:37 · 566 阅读 · 0 评论 -
stl-bind
/* * File: main.cpp * Author: Vicky.H * Email: eclipser@163.com */#include #include #include #include int add1(int i, int j, int k) { return i + j + k;}class Utils转载 2017-11-02 15:51:57 · 319 阅读 · 0 评论 -
STL之迭代器
迭代器(iterator)有时又称游标(cursor)是程式设计的软件设计模式,可在容器物件(container,例如链表或阵列)上遍访的接口,设计人员无需关心容器物件的内容。 迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。迭代器修改了常规指针的接口,所谓迭代器是一种概念上的抽象:那些行为上像迭代器的东转载 2014-05-12 10:58:29 · 834 阅读 · 0 评论 -
【STL】插入型迭代器(Insert Iterator)或插入器(inserter)
1. 定义插入型迭代器(Insert Iterator),又叫插入器(Inserter)。2. 作用插入迭代器的主要功能为把一个赋值操作转换为把相应的值插入容器的操作。算法库对所有在容器上的操作有约束:决不修改容器的大小(不插入、不删除)。有了插入迭代器,既使得算法库可以通过迭代器对容器插入新的元素,又不违反这一统带,即保持了设计上的一致性。3. 类型3.1 尾部插入器转载 2014-05-07 15:41:58 · 857 阅读 · 0 评论 -
STL异常
STL异常数据越界等会报出std::out_of_range异常。 只有很少的情况下范围检查才是不可避免的。在这些情况下,STL 容器提供一个更加安全(但是速度也更慢)的方法来访问元素,即 at() 成员函数。at() 在功能上与重载的 [] 操作符很相似,但是它执行范围检查。如果参数是无效的,at() 就抛出一个 std::out_of_range 异常。因此,我们应该总是将 at转载 2014-05-08 15:15:25 · 993 阅读 · 0 评论 -
ATL简介
一. 什么是ATL 自从1993年Microsoft首次公布了COM技术以后,Windows平台上的开发模式发生了巨大的变化,以COM为基础的一系列软件组件化技术将Windows编程带入了组件化时代。广大的开发人员在为COM带来的软件组件化趋势欢欣鼓舞的同时,对于COM开发技术的难度和烦琐的细节也感到极其的不便。COM编程一度被视为一种高不可攀的技术,令人望而却步。开发人员希望能够有一转载 2012-10-24 13:41:53 · 1172 阅读 · 0 评论 -
set
1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操作,如:插入、排序、删除转载 2013-04-29 20:10:58 · 781 阅读 · 0 评论 -
vector,list,map的比较
vector支持快速的查找,但是插入费时。list支持快速的插入和删除,但是查找费时。map比vector查找更快(map的内部数据结构用rb-tree实现,而用vector你只能用线性查找,效率很低,也有一种说法,关联式容器拥有自动排序能力,并不意味它们在排序方面的执行效率更高。事实上由于关联式容器每安插一个新元素,都要进行一次排序,所以速度反而不及系列容器经常采用的手法:先安插所有元素原创 2013-04-29 20:18:14 · 1097 阅读 · 0 评论 -
fstream
从一个文件里读,写到另一个文件。 std::ifstream input("1.raw", std::ios::binary); int nFileLen = 6266880; char* pFileBuf = new char[nFileLen]; input.read(pFileBuf, nFileLen); std::ofstream dump_file("2.raw", std::ios::binary); dump_file.write...原创 2014-03-03 13:21:28 · 868 阅读 · 0 评论 -
std::auto_ptr
1, auto_ptr类auto_ptr是一个模板类,定义如下:template typenameType>class auto_ptr {...};它存储的是一个指向Type的指针。顾名思义,auto_ptr是一种智能指针,它包含一个动态分配内存的指针,并在它生命周期结束的时候,销毁包含的指针所指向的内存。例1: void f()转载 2013-04-16 15:37:29 · 874 阅读 · 0 评论 -
STL--list
定义:typedef struct TAGFD_RECORDINFO{ xxx}TFD_RECORDINFO, *PTFD_RECORDINFO;std::list m_ListRecordInfo;添加m_ListRecordInfo.push_back( ptRecordInfo );删除: PTFD_RECORDINFO ptRecordInfo;原创 2013-01-25 15:12:42 · 583 阅读 · 0 评论 -
auto_ptr的使用
#include #include using namespace std; class TC { public: TC(){cout~TC(){cout}; void foo(bool isThrow) { auto_ptr pTC(new TC); //方法2 //TC *pTC = new TC; //方法1 try { if(转载 2014-05-07 16:52:00 · 747 阅读 · 0 评论 -
STL--常见问题
一 erasevector::iterator iter; for (iter = ms_vUsfulSource.begin(); iter != ms_vUsfulSource.end();iter++) { delete (*iter); ms_vUsfulSource.erase(iter); }分析:erase会返回下一个迭代,改为如下:vector:原创 2013-04-22 20:17:16 · 738 阅读 · 0 评论 -
STL--string
1.c++11标准增加了全局函数std::to_string:string to_string (int val);string to_string (long val);string to_string (long long val);string to_string (unsigned val);string to_string (unsigned long val);string to_st...原创 2012-09-17 15:51:32 · 719 阅读 · 0 评论