STL
文章平均质量分 59
VanceKing
用最专业的心态做最靠谱的事
展开
-
在vector中,怎样删除某个指定值的元素
【在vector中,怎样删除某个指定值的元素】Vectors provide no operation to remove elements directly that have a certain value. You must use an algorithm to do this.一.删除所有满足条件的元素For example, the following statemen转载 2015-04-25 11:41:04 · 11297 阅读 · 0 评论 -
C++ STL的底层数据结构都是啥
C++ STL 的实现:1.vector 底层数据结构为数组 ,支持快速随机访问2.list 底层数据结构为双向链表,支持快速增删3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问4.stack 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限原创 2015-08-09 16:56:35 · 858 阅读 · 0 评论 -
安全删除STL容器元素
STL容器迭代过程中删除元素技巧(转)1.连续内存序列容器(vector,string,deque)序列容器的erase方法返回值是指向紧接在被删除元素之后的元素的有效迭代器,可以根据这个返回值来安全删除元素。vector c;for(vector::iterator it = c.begin(); it != c.end();){if(need_delete())转载 2015-08-11 21:57:56 · 628 阅读 · 0 评论 -
map unordered_map hash_map比一比
map hash_map unordered_map 性能测试 2012-01-08 22:27:29分类: C/C++by zieckey测试条件:gcc version 4.2.1 20070719 [FreeBSD]FreeBSD 7.2-RELEASE #0: Fri May 1 07:18:07 UTC 2009转载 2015-08-17 15:34:40 · 421 阅读 · 0 评论 -
简洁的发包--网络游戏
单个协议数据(不含头)大小超过32字节,进行zlib压缩。单个协议发送数据大小不超过64K,如果超过了,在逻辑层把协议中数据,手动拆分多次发送。原创 2015-08-05 16:31:59 · 961 阅读 · 0 评论 -
vector内存怎么释放
VECTOR的工作原理是系统预先分配一块CAPACITY大小的空间,当插入的数据超过这个空间的时候,这块空间会让某种方式扩展,但是你删除数据的时候,它却不会缩小。vector为了防止大量分配连续内存的开销,保持一块默认的尺寸的内存,clear只是清数据了未清内存,因为vector的capacity容量未变化,系统维护一个的默认值有什么方法可以释放掉vector中占用的全部内存呢原创 2015-08-07 10:43:46 · 2212 阅读 · 0 评论 -
如何知道我在一堆数据中排第几std::partition
业务中遇到一个问题,有一堆数据,我需要知道我这个数据在那一堆数据中排第几。一般做法就是先把所有已知数据排序,再遍历找到我,那么就知道我是第几了。这么做好吗?回答是:好。那么请问是最好吗?不是最好。std::sort 复杂度std::partition 复杂度 ,O(n) ,n 为 last - firststd::distance 复杂度想起了一个叫做std::原创 2015-12-05 11:06:41 · 780 阅读 · 0 评论 -
如何统计一个新玩家在60天内的登录情况----std::bitset
业务需求:需要知道一个新建的账号在60天内登录的情况。机智的程序猿们都会想到用stl的各种关联容器去记录而后分析。经过仔细考量,本猿想到另外一种办法可以简单的实现该需求,并且可以使数据存储尽可能小。废话不多少,上代码:void Player::updateLoginStatistics(){ time_t now = Timestamp::now();原创 2016-02-16 13:57:12 · 552 阅读 · 0 评论