STL/Boost
文章平均质量分 73
专注客户端技术
这个作者很懒,什么都没留下…
展开
-
经常忘记iterator的使用,贴上源码方便回忆
// iterator standard header#pragma once#ifndef _ITERATOR_#define _ITERATOR_#ifndef RC_INVOKED#include #include #pragma pack(push,_CRT_PACKING) #pragma warning(push,3)_STD_BEGIN /原创 2013-05-07 20:36:21 · 965 阅读 · 0 评论 -
STL之迭代器的使用注意事项
情况一:循环遍历删除基于连续内存的容器中的元素//错误代码:for (vector::iterator iter=vecSalary.begin(); iter != vecSalary.end(); ++iter) { if(*iter < 2) { vecSalary.erase(iter); } }我们来仔细分析下,在删除某个元素时,原创 2013-09-18 09:18:02 · 1267 阅读 · 0 评论 -
std::tr1::function
在C++的TR1中(Technology Report)中包含一个function模板类和bind模板函数,使用它们可以实现类似函数指针的功能,但却却比函数指针更加灵活,特别是函数指向类 的非静态成员函数时。可以参考Scott Meyers. >. Item 35.下面具体说明其使用方法。一、指向全局函数或静态成员函数时因为在本质上讲全局函数和静态成员函数没有区 别,使用方法上除了原创 2013-09-16 21:56:48 · 749 阅读 · 0 评论 -
boost::function 用来注册函数(switch N多case的解决方案)
在现在做的游戏开发的项目中,需要根据道具类型调用不同的接口,通常的写法是用switch(itemType){ case ...; case ...;...}这样写的话,如果将来有新增情况会导致case越来越多 ,不好。正好项目中使用了boost库,结果想了个解决方案: typedef boost::function TypeOnUseI原创 2013-09-16 21:15:13 · 912 阅读 · 0 评论 -
STL容器选择
经常听到有人抱怨STL性能不好,不排除你的公司十分牛X而且对性能要求极高,至少我想绝大多数企业和工程师自己写不出比STL更好的库,如果你不相信,请先看看《STL源码剖析》这本书。我想大多数情况是你没有选择对相应的容器和没有正确的使用。容器分类标准STL序列容器:vector,string,deque,list;标准STL关联容器:set,multiset,map原创 2013-09-14 22:27:27 · 710 阅读 · 0 评论 -
STL基础篇(适合初学者快速入门)
1. STL 是什么作为一个C++ 程序设计者,STL 是一种不可忽视的技术。Standard Template Library (STL) :标准模板库, 更准确的说是 C++ 程序设计语言标准模板库。STL 是所有C++ 编译器和所有操作系统平台都支持的一种库,说它是一种库是因为,虽然STL 是一种标准,也就是说对所有的编译器来说,提供给C++ 程序设计者的接口都是一样原创 2013-09-14 11:52:39 · 7644 阅读 · 2 评论 -
智能指针boost::weak_ptr
【1】boost::weak_ptr简介boost::weak_ptr属于boost库,定义在namespace boost中,包含头文件 #include便可以使用。【2】boost::weak_ptr详解智能指针boost::scope_ptr和智能指针boost::shared_ptr就完全可以解决所有单个对象内存的管理问题。这儿咋还多出一个boost::weak_ptr,是原创 2013-09-14 11:04:31 · 729 阅读 · 0 评论 -
智能指针boost::scoped_ptr
【1】boost::scoped_ptr简介boost::scoped_ptr属于boost库,定义在namespace boost中,包含头文件#include 便可以使用。一句话:一个作用域指针(即所谓智能指针scoped_ptr对象)独享一个动态分配的内存对象管理所有权。【2】boost::scoped_ptr与stl::auto_ptr的联系boost::scoped_pt原创 2013-09-14 10:40:43 · 735 阅读 · 0 评论 -
智能指针boost::shared_ptr
【1】boost::shared_ptr简介boost::shared_ptr属于boost库,定义在namespace boost中,包含头文件#include便可以使用。上篇boost::scoped_ptr中我们看到boost::scoped_ptr独享所有权,不允许赋值、拷贝。而boost::shared_ptr是专门用于共享所有权的,由于要共享所有权,其在内部使用了引用计数机原创 2013-09-14 10:58:40 · 1092 阅读 · 0 评论 -
智能指针std::auto_ptr
auto_ptr是当前C++标准库中提供的一种智能指针,或许相对于boost库提供的一系列眼花缭乱的智能指针, 或许相对于Loki中那个无所不包的智能指针,这个不怎么智能的智能指针难免会黯然失色。诚然,auto_ptr有这样那样的不如人意,以至于程序员必须像使用”裸“指针那样非常小心的使用它才能保证不出错,以至于它甚至无法适用于同是标准库中的那么多的容器和一些算法,但即使如此,我们仍然不能否认这个原创 2013-08-21 20:48:07 · 782 阅读 · 0 评论 -
如何使用set::key_comp 和 set::value_comp 标准模板库 (STL) 函数
下面的代码示例演示如何使用 Visual C++ set::key_comp 和 set::value_comp 的 STL 功能。所需要的头文件:原型 template class set { public: // Function 1: key_compare key_comp() const;原创 2013-08-27 14:09:56 · 3834 阅读 · 0 评论 -
STL备忘录(转载)
1. string.empty() 不是用来清空字符串,而是判断string是否为空,清空使用string.clear();2. string.find等查找的结果要和string::npos比较,而不是和-1比较。(各个平台可能不同)3. 将string转为char * ,用char * t = (char *)s.c_str() ,而不是 char *t =s.begin()原创 2013-08-22 14:47:55 · 607 阅读 · 0 评论 -
string使用小结
看了The C++ Programming Language的第二十二章 串,记一下笔记:c++之父给出的关于string的忠告1:尽量使用string操作,少用c风格字符串函数2:用string作为变量或者成员,不作为基类3:你可以将string作为参数值或者返回值,让系统去关心存储管理问题4:当你希望做范围检查时,请用at()而不是迭代器或者[]5:当你希望优化速度原创 2013-08-22 00:45:48 · 601 阅读 · 0 评论 -
最短代码实现vector的输入-排序-输出
#include #include #include #include void main(){ std::vector ivec((std::istream_iterator (std::cin)),std::istream_iterator() ); sort(ivec.begin(),ivec.end()); copy(ivec.begin(),ivec.en原创 2013-05-07 19:55:18 · 939 阅读 · 0 评论 -
STL之tuple
//将表示人的数据打包struct Human{ string strName; unsigned int nAge; double fWeight;};vector vecHuman;一个vector容器保存多组数据的问题,但是也需要在代码中定义多个结构体,如果结构体过多,就会使得代码显得繁杂,STL中的tuple就解决这问题:跟结构体可以打包多个数据类似原创 2013-09-18 09:53:41 · 1495 阅读 · 0 评论