STL
文章平均质量分 65
hustyangju
这个作者很懒,什么都没留下…
展开
-
C++ STL 容器适配器
标准库提供了三种顺序容器适配器:queue、priority_queue、stack.适配器是标准库中通用的概念,包括容器适配器、迭代器适配器和函数适配器。 本质上,适配器是使一事物的行为类似于另一类事物的行为的一种机制。容器适配器让一种已存在的容器类型采用另一种不同的抽象类型的工作方式实现。例如,stack适配器可使任何一种顺序容器以栈的方式工作。如下列出了所有容器适配器通原创 2014-02-19 20:20:20 · 1994 阅读 · 0 评论 -
STL 之 list 源码剖析
参考侯捷的剖析,随着理解的深入会补充一些个人注解!G++ 2.91.57,cygnus\cygwin-b20\include\g++\stl_list.h 完整列表/* * * Copyright (c) 1994 * Hewlett-Packard Company * * Permission to use, copy, modify, distribute and sell原创 2014-04-25 15:30:20 · 1087 阅读 · 0 评论 -
STL 之 map 源码剖析
/* * * Copyright (c) 1994 * Hewlett-Packard Company * * Permission to use, copy, modify, distribute and sell this software * and its documentation for any purpose is hereby granted without fee,原创 2014-04-28 15:54:46 · 1394 阅读 · 0 评论 -
STL 之 multimap 源码剖析
/* * * Copyright (c) 1994 * Hewlett-Packard Company * * Permission to use, copy, modify, distribute and sell this software * and its documentation for any purpose is hereby granted without fee,原创 2014-04-28 15:58:45 · 1055 阅读 · 0 评论 -
STL 逆向迭代器 reverse_iterator 的逻辑位置与实际位置
对于逆向迭代器,很重要的一点是需要弄清楚逻辑位置和实际位置二者的区别。下图显示了逆向迭代器的位置和所指的数值:可以发现,逆向迭代器所指位置(实际位置)和所代表的的数值(逻辑位置或数值)是不同的。C++这么做是有其原因的。导致这个行为的原因是区间的半开性。为了能够制定容器内的所有元素,我们必须运用最后一个元素的下一个位置。但是对于reverse迭代器而言,这个位置位于第一个元素之原创 2014-04-29 09:59:00 · 1529 阅读 · 0 评论 -
高效实现 std::string split() API
Qt下 QString 实现了split()函数,而std::string则没有实现,STL中也没有实现,只能自己写一个了。#include #include using namespace std; vector split(string strtem,char a) { vector strvec; string::size_type po原创 2015-03-20 14:07:52 · 10253 阅读 · 1 评论 -
常用哈希函数的比较及其C语言实现
基本概念所谓完美哈希函数,就是指没有冲突的哈希函数,即对任意的 key1 != key2 有h(key1) != h(key2)。设定义域为X,值域为Y, n=|X|,m=|Y|,那么肯定有m>=n,如果对于不同的key1,key2属于X,有h(key1)!=h(key2),那么称h为完美哈希函数,当m=n时,h称为最小完美哈希函数(这个时候就是一一映射了)。在处理大规模字符串数据原创 2015-07-22 23:36:23 · 10347 阅读 · 1 评论 -
STL之hashtable源码剖析
// Filename: stl_hashtable.h////////////////////////////////////////////////////////////////////////////////// 本实作的hashtable采用的是开链法, 其内存布局如下/////////////////////////////////////////////////////原创 2015-07-23 10:04:49 · 958 阅读 · 0 评论 -
STL 之 hash_map源码剖析
// Filename: stl_hash_map.h// hash_map和hash_multimap是对hashtable的简单包装, 很容易理解/* * Copyright (c) 1996 * Silicon Graphics Computer Systems, Inc. * * Permission to use, copy, modify, distribute原创 2015-07-23 14:42:49 · 1143 阅读 · 0 评论 -
map insert()两种使用方法
#include #include #include #include using namespace std;int main(int argc, char *argv[]){ map m; typedef map::value_type vt; for(int i=0; i<50; i++) { int val =原创 2015-07-23 14:52:27 · 5996 阅读 · 1 评论 -
STL 之 multiset 源码剖析
G++ 2.91.57,cygnus\cygwin-b20\include\g++\stl_multiset.h 完整列表/*** Copyright (c) 1994* Hewlett-Packard Company** Permission to use, copy, modify, distribute and sell this software* and its docum原创 2014-04-25 16:50:45 · 1028 阅读 · 0 评论 -
STL 之 vector 源码剖析
这里不讨论vector的使用,毕竟参透源码,怎么用也就更清晰了。参考侯捷的源码分析,根据理解的深入会加入一些注解!G++ 2.91.57,cygnus\cygwin-b20\include\g++\stl_vector.h 完整列表/* * * Copyright (c) 1994 * Hewlett-Packard Company * * Permission to use,原创 2014-04-25 11:24:26 · 1202 阅读 · 0 评论 -
c++ founction object
根据SGI官方文档,仿函数也叫函数对象(Function Object, or Functor),定义就是任何可以像函数一样被调用的对象。一个普通的函数是函数对象,一个函数指针当然也是,广义上说任何定义了operator()的类对象都可以看作是函数对象。仿函数(Functor、Function Object)传递给STL算法的函数型参数(functional arguement)不一定要是原创 2014-04-29 15:25:19 · 1157 阅读 · 0 评论 -
STL中的Unique的用法
STL中Unique函数的作用是去除相邻重复元素#include #include #include using namespace stdint main(){int a[10] = {7,4,1,7,4,1,7,4,1,0};sort(a,a+10);//小到大vectorver(a,a+10);vector::iterator iter原创 2014-04-01 22:02:15 · 1398 阅读 · 0 评论 -
简单谈谈 C/C++ 递归的思想,实现,以及和循环的关系
很多初学者往往对递归迷惑不解,也在这上面花了不少的时间。其实教材上的例子很经典,只是它说的有一些唠叨了。初学者会看的头大的。编程是解决问题的,而现实中很多的问题都是比较简单的,没有象汉诺塔那么复杂。我们也不必追究递归到底是怎样实现的,我们只是要会用递归,会用递归来为我们解决一些问题,这就行了。 首先来看一个例子:有一个Febonacci序列: 1,1,2,3原创 2014-04-01 22:11:30 · 4322 阅读 · 0 评论 -
STL 之 queue、priority_queue 源码剖析
G++ 2.91.57,cygnus\cygwin-b20\include\g++\stl_queue.h 完整列表/*** Copyright (c) 1994* Hewlett-Packard Company** Permission to use, copy, modify, distribute and sell this software* and its document原创 2014-05-06 09:55:11 · 1066 阅读 · 0 评论 -
STL 之 stack 源码剖析
G++ 2.91.57,cygnus\cygwin-b20\include\g++\stl_stack.h 完整列表/* * * Copyright (c) 1994 * Hewlett-Packard Company * * Permission to use, copy, modify, distribute and sell this software * and its do原创 2014-05-06 09:24:54 · 1137 阅读 · 0 评论 -
STL 之 pair 源码剖析
#ifndef __SGI_STL_INTERNAL_PAIR_H#define __SGI_STL_INTERNAL_PAIR_H__STL_BEGIN_NAMESPACEtemplate struct pair {typedef T1 first_type;typedef T2 second_type;T1 first; // 注意,它是 publicT2 second; //原创 2014-04-23 10:20:42 · 1059 阅读 · 0 评论 -
C++异常安全之std:auto_ptr
auto_ptr是C++标准库中()为了解决资源泄漏的问题提供的一个智能指针类模板(注意:这只是一种简单的智能指针)auto_ptr的实现原理其实就是RAII,在构造的时候获取资源,在析构的时候释放资源,并进行相关指针操作的重载,使用起来就像普通的指针。std::auto_ptr pa(new ClassA);很多人听说过标准auto_ptr智能指针机制,但并不是每个人都天天使用它。这原创 2014-04-22 11:35:56 · 1669 阅读 · 0 评论 -
STL 之 set 源码剖析
G++ 2.91.57,cygnus\cygwin-b20\include\g++\stl_set.h 完整列表/*** Copyright (c) 1994* Hewlett-Packard Company** Permission to use, copy, modify, distribute and sell this software* and its documentat原创 2014-04-25 16:44:46 · 1841 阅读 · 0 评论 -
STL 之 deque 源码剖析
参考侯捷的源码分析,随着理解的深入会加入自己的注解!G++ 2.91.57,cygnus\cygwin-b20\include\g++\stl_deque.h 完整列表/* * * Copyright (c) 1994 * Hewlett-Packard Company * * Permission to use, copy, modify, distribute and sel原创 2014-04-25 14:48:39 · 1637 阅读 · 0 评论 -
C++中智能指针的设计和使用
原文地址:http://blog.csdn.net/hackbuteer1/article/details/7561235 智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计转载 2015-09-12 17:00:03 · 963 阅读 · 0 评论