boost深入剖析之使用技巧 第四讲boost容器库
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Desc:
The return value is a pair p. p.second is true if and only if insertion took place. On successful insertion, p.first points to the element inserted; otherwise, p.first points to an element that caused the insertion to be banned. Note that more than one element can be causing insertion not to be allowed.
template< typename TagList, typename KeyFromValue, typename Compare=std::less<KeyFromValue::result_type>
> struct (ordered_unique | ordered_non_unique);
2
第二节: mutli_index概念图
3
第三节: mutli_index头文件
1、 头文件
2、 namespace using namespace boost; using namespace boost::multi_index; 4
第四节: mutli_index类型
index(也可以称为视图)
> struct (hashed_unique | hashed_non_unique);
7
第五节: 关联性索引
hashed原理图 //number of bucket
1) size_type bucket_count() const; //An upper bound on the number of buckets
4) size_type buket(key_type const& k) const //Return begin and end iterators for bucket n.
5) const_local_iterator begin(size_type n) const; const_local_iterator end(size_type n) const;
5
第五节: 关联性索引
ordered_unqiue 和 ordered_non_unqiue index template<
typename KeyFromValue, typename Compare=std::less<KeyFromValue::result_type> > struct (ordered_unique | ordered_non_unique);
13
第七节: index各种操作及比较
4、 index modify 操作 (a : 添加/删除操作) insert成员函数 std::pair<iterator,bool> insert(const value_type& x); //sequenced和random_access不具有该函数
iterator insert(iterator position,const value_type& x);
6
第五节: 关联性索引
hashed_unqiue 和hashed_non_unqiue index template<
typename KeyFromValue, typename Hash=boost::hash<KeyFromValue::result_type>, typename Pred=std::equal_to<KeyFromValue::result_type> > struct (hashed_unique | hashed_non_unique);
9
第七节: index各种操作及比较
1、 index iterator 操作
10
Baidu Nhomakorabea
第七节: index各种操作及比较
2、 index capacity操作
11
第七节: index各种操作及比较
3、 index access操作
12
第七节: index各种操作及比较
4 、 index modify 操作 (a : 添加/删除操作)
2) size_type max_bucket_count() const; //The number of elements in bucket n
3) size_type bucket_size(size_type n) const; //Returns the index of the bucket //which would contain k
template< typename TagList, typename KeyFromValue, typename Hash=boost::hash<KeyFromValue::result_type>, typename Pred=std::equal_to<KeyFromValue::result_type>
《boost深入剖析之使用技巧 》
第四讲:boost容器库
第一节: 全能容器multi_index
功能最强大,灵活性最高,复杂度最大的容器 stl的容器map,hashmap,list,vector,boost::bimap都是multi_index的特殊形式 无数的组合,没有做不到,只有你想不到 对关系型数据库进行内存建模,具有主键,联合主键,外键,视图,索引等数据库核心概念,你可以将其看成一个 内存表示的具有基本功能的mysql数据库 存储与操作相分离,使用multi_index_container作为数据存储容器,使用任何一个index对 mutil_index_container容器进行modify操作,其他关联index 会进行同步更新 多种类型的index,可以将每一个index(或视图)看成某一种stl容器
8
第六节: 线性索引
non-key-based index //相当于stl::list表示 template<typename TagList=tag<> > struct sequenced; //相当于stl::vector表示 template<typename TagList=tag<> > struct random_access;