现在位置: 首页 > stl
2019-06-04 11:22 工业·编程 ⁄ 共 14563字 暂无评论
1995年3月,Dr.Dobb's Journal特约记者, 著名技术书籍作家Al Stevens采访了STL创始人AlexanderStepanov. 这份访谈纪录是迄今为止对于STL发展历史的最完备介绍, 侯捷先生在他的STL有关文章里推荐大家阅读这篇文章. 因此我将该文全文翻译如下: Q: 您对于generic programming进行了长时间的研究, 请就此谈谈. A: 我开始考虑有关GP的问题是在7O年代末期, 当时我注意到有些算法并不依赖于数据结构的   特定实现,而只是依...
阅读全文
2018-12-24 19:55 工业·编程 ⁄ 共 2566字 暂无评论
Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢。 list的类模板声明为 template<class T, class Allocator=allocator<T>>class list; 与vector相同,list中的元素可以使任意型别的T,必须具备可设置和可复制两个属性,包括int、double、string以及结构体或其他自定义的类型。 与vector的不同有如下几点: 1、list不支持随机读取 2、list的插入与删除操作非常...
阅读全文
2018-12-22 19:50 工业·编程 ⁄ 共 1896字 暂无评论
1 基本操作 (1)头文件#include<vector>. (2)创建vector对象,vector<int> vec; (3)尾部插入数字:vec.push_back(a); (4)使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的。 (5)使用迭代器访问元素. vector<int>::iterator it; for(it=vec.begin();it!=vec.end();it++) cout<<*it<<endl; (6)插入元素:    vec.insert(vec.begin()+i,a);在第i+1个元素前面插...
阅读全文
2018-10-20 12:19 工业·编程 ⁄ 共 3595字 暂无评论
map是C++ STL中的关联容器,存储的是键值对(key-value),可以通过key快速索引到value。map容器中的数据是自动排序的,其排序方式是严格的弱排序(stick weak ordering),即在判断Key1和Key2的大小时,使用“<”而不是“<=”。map 使用二叉搜索树实现,STL map的底层实现是红黑树。 map有几个值得注意的地方:map的赋值运算是深拷贝,即调用map_a = map_b后,map_a中的元素拥有独立的内存空间。map的[]运算比较有意思,当元...
阅读全文
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就是成败的关键了,看看如何把它用...
阅读全文