现在位置: 首页 > stl
2015-08-20 21:34 工业·编程 ⁄ 共 716字 暂无评论
正常的map默认按照key值排序,而map又没有像vector一样的sort()函数,那么如果将map按照value值排序呢?有两种方法: 方法1 将map中的key和value分别存放在一个pair类型的vector中,然后利用vector的sort函数排序,其中map_verb存放我的map值: 存放我的map值: #include<algorithm> typedef pair<string, int> PAIR; int cmp(const PAIR &x, const PAIR &y) { return x.second > y...
阅读全文

今天在完成一个功能模块时,遇到了一个很棘手的问题,大概是这样的: 主模块(EXE)的一个DLL中有一个函数FunA(),该函数需要查询数据库,得到记录集做处理,而数据库的操作又单独封装导出了一个DLL,由于记录集是变长的(不知道有多少记录),所以采用vector对象来传递数据。大概的过程如下: boolFunA_EXE() { vector<T> vecRet;        string  strSql = “SELECT * FROM .....”;  ...
阅读全文
2015-01-29 23:12 工业·编程 ⁄ 共 2191字 暂无评论
Qt 的信号槽和 Boost.Signals 由于有着截然不同的设计目标,因此二者的实现、强度也十分不同。将二者混合在一起使用也不是不可能的,我们将在本系统的最后一部分来讨论这个问题。 使用信号槽 信号槽是伟大的工具,但是如何能更好的使用它们?相比于直接函数调用,有三点值得我们的注意。一个信号槽的调用: 或许会比直接函数调用耗费更多的时间/空间; 可能不能使用 inline; 对于代码阅读者来说可能并不友好。 使用信号...
阅读全文
2015-01-28 23:11 工业·编程 ⁄ 共 1008字 暂无评论
说几个STL的缺点吧,虽然都是在比较极端的情况下出现,但是对于一些大项目还是会遇到的 1. 代码膨胀问题 每一个实例化过的模板类,都会膨胀出一份独立的代码,比如 std::vector<std::string>, std::vector<int>,编译后会产生两份代码,在VC2008下,每份代码大约是3-4kb,这是因为vector比较简单代码少,如果是map则会产生30-50kb的代码,因为map里有个复杂的红黑树。对于数据处理类的代码里一般会定义很多种不同的...
阅读全文
STL是最新的C++标准函数库中的一个子集,这个庞大的子集占据了整个库的大约80%的分量。而作为在实现STL过程中扮演关键角色的模板则充斥了几乎整个C++标准函数库。在这里,我们有必要看一看C++标准函数库里包含了哪些内容,其中又有哪些是属于标准模板库(即STL)的。 C++标准函数库为C++程序员们提供了一个可扩展的基础性框架。我们从中可以获得极大的便利,同时也可以通过继承现有类,自己编制符合接口规范的容器、算法、迭代...
阅读全文
2014-09-10 06:39 工业·编程 ⁄ 共 2335字 暂无评论
0、前言 相信有很有种情况下面要在vector下过滤掉重复的数据就比如在数组中需要过滤重复数据一样重要一般常用的方法,好像还是在学校中教的,进行匹配一遍,然后再进行插入既然有了STL容器,那么我们可以完全抛弃上面提到的一般方法,把效率提高至少1倍 1、思路 map也是我们常用的一种容器,他主要的保存方式是,也就是通过key来进行索引,而且这个key是不重复的,那么在我们过滤的前提下,map就是成败的关键了,看看如何把它用...
阅读全文
2014-06-07 11:00 工业·编程 ⁄ 共 123字 暂无评论
按以下顺序看---- 相关阅读 ----学习C++从入门到精通的经典书籍(修正版) 1、C++标准库自修手册 2、Efficient STL 3、泛型编程与STL 4、STL源码剖析     其实,多找几本一起看才是王道。     看完了神功练就! 专题:程序员书籍推荐
阅读全文
2014-05-13 08:56 工业·编程 ⁄ 共 1638字 暂无评论
1.去官网http://www.stlport.org/下载最新的STLport,我下载了STLport-5.2.1.tar.bz2,它是纯净的源码,需要用户自己编译。 2.VS2010编译步骤:(解压文件STLport-5.2.1.tar.bz2到路径D:\tmpcode\STLport-5.2.1为例) 文本打开D:\tmpcode\STLport-5.2.1\stlport\stl\_cstdlib.h文件,找到158行: inline _STLP_LONG_LONG abs(_STLP_LONG_LONG __x) { return __x < 0 ? -__x : __x; } 修改成: #if !defined(_STLP_MSVC) || (_STL...
阅读全文
vector和数组区别: vector是个容器,array不是 vector可以知道自己的大小,array不知道 vector可以变大变小,这里变小指的是元素数目,array不能变大变小 数组在内存中分配的连续空间,多次分配释放后会有内存碎片, 而vectors是动态增长的,当前的容量(capacity)不足就申请一块当前容量2倍的新内存空间,然后将所有的老元素全部拷贝到新内存中,添加大量元素的时候的花费的惊人的大. 还有vector的迭代器能防止出现类似数组愈界...
阅读全文
2013-07-01 21:20 工业·编程 ⁄ 共 2915字 暂无评论
从STL的std::queue说起 STL的std::queue类是个容器适配器,即由其它容器包装而成的特殊数据结构。 提到queue,就少不了提及它的两个最重要的操作:往队列尾部填加数据的push和从队列头部弹出数据的pop。本文不打算讨论push,只想考查一下pop。std::queue的pop函数相当简单: void pop(); 它的唯一作用就是将当前的队首元素从队列中删除。 同时,std::queue又提供两个重载的front函数,用以获得当前的队首元素: value_type&...
阅读全文