acl  3.5.3.0
acl::diff_manager类 参考

#include <diff_manager.hpp>

+ 类 acl::diff_manager 继承关系图:
+ acl::diff_manager 的协作图:

Public 成员函数

 diff_manager (long long range_from=-1, long long range_to=-1)
 
 ~diff_manager (void)
 
dbuf_guardget_dbuf (void)
 
void diff_changes (const std::vector< diff_object * > &curr_objs, const std::vector< diff_object * > &old_olds)
 
const std::vector< diff_object * > & get_new (void) const
 
const std::vector< diff_object * > & get_deleted (void) const
 
const std::vector< std::pair< diff_object *, diff_object * > > & get_updated (void) const
 
const std::vector< diff_object * > & get_same (void) const
 
const std::vector< diff_object * > & get_extra_added (void) const
 
const std::vector< diff_object * > & get_extra_deleted (void) const
 
const std::vector< std::pair< diff_object *, diff_object * > > & get_extra_updated (void) const
 
void reset (void)
 

额外继承的成员函数

- Protected 成员函数 继承自 acl::acl::noncopyable
 noncopyable ()
 
 ~noncopyable ()
 

详细描述

求两个集合的差集的管理器

在文件 diff_manager.hpp15 行定义.

构造及析构函数说明

◆ diff_manager()

acl::diff_manager::diff_manager ( long long  range_from = -1,
long long  range_to = -1 
)

◆ ~diff_manager()

acl::diff_manager::~diff_manager ( void  )

成员函数说明

◆ diff_changes()

void acl::diff_manager::diff_changes ( const std::vector< diff_object * > &  curr_objs,
const std::vector< diff_object * > &  old_olds 
)

比较两个集合的差集,从而获得两个集合新增的对象集合、删除的对象集合 以及变化的对象集合

参数
curr_objs{const std::vector<diff_object*>&} 当前对象的集合
old_olds{const std::list<diff_object*>&} 旧元素集合,内部 用该集合生成哈希表,使当前集合与该旧集合进行差异化比较

◆ get_dbuf()

dbuf_guard& acl::diff_manager::get_dbuf ( void  )

获得内部创建的内存池对象

返回
{dbuf_guard&} 返回内建内存池对象,使用该内存池创建的 对象必须在 diff_manager 对象销毁前销毁,因为 diff_manager 销毁时 该内建内存池会自动销毁

◆ get_deleted()

const std::vector<diff_object*>& acl::diff_manager::get_deleted ( void  ) const
inline

当 diff_changes 进行差异化比较成功后,本函数用于返回相对于旧集合, 在当前集合中不存在的(即被删除的)元素集合

返回
{std::vector<diff_object*>&}

在文件 diff_manager.hpp53 行定义.

54  {
55  return objs_del_;
56  }

◆ get_extra_added()

const std::vector<diff_object*>& acl::diff_manager::get_extra_added ( void  ) const
inline

获得新增的不在指定区间范围内的对象集合

返回
{const std::vector<diff_object*>&}

在文件 diff_manager.hpp94 行定义.

95  {
96  return objs_new_extra_;
97  }

◆ get_extra_deleted()

const std::vector<diff_object*>& acl::diff_manager::get_extra_deleted ( void  ) const
inline

获得删除的不在指定区间范围内的对象集合

返回
{const std::vector<diff_object*>&}

在文件 diff_manager.hpp103 行定义.

104  {
105  return objs_del_extra_;
106  }

◆ get_extra_updated()

const std::vector<std::pair<diff_object*, diff_object*> >& acl::diff_manager::get_extra_updated ( void  ) const
inline

获得修改的不在指定区间范围内的对象集合

返回
{const std::vector<diff_object*>&}

在文件 diff_manager.hpp113 行定义.

114  {
115  return objs_upd_extra_;
116  }

◆ get_new()

const std::vector<diff_object*>& acl::diff_manager::get_new ( void  ) const
inline

获得新增的对象集合

返回
{std::vector<diff_object*>&}

在文件 diff_manager.hpp43 行定义.

44  {
45  return objs_new_;
46  }

◆ get_same()

const std::vector<diff_object*>& acl::diff_manager::get_same ( void  ) const
inline

当 diff_manger 进行差异华比较成功后,本函数用于返回相同对象的集合

返回
{std::vector<diff_object*>&}

在文件 diff_manager.hpp85 行定义.

86  {
87  return objs_equ_;
88  }

◆ get_updated()

const std::vector<std::pair<diff_object*, diff_object*> >& acl::diff_manager::get_updated ( void  ) const
inline

当 diff_changes 进行差异化比较成功后,本函数用于返回相对于旧集合, 在当前集合中对象值发生变化的变化集合对象

返回
{std::vector<std::pair<diff_object*, diff_object*> >&} 返回产生变化的对象的集合,其中 pair 中的 first 为新对象,second 为旧对象 @sample const std::vector<std::pair<diff_object*, diff_object*> >& results = manager.get_updated(); std::vector<std::pair<diff_object*, diff_object*> >::const_iterator cit = results.begin(); for (; cit != results.end(); ++cit) printf(">> key: %s, curr value:%s, old value: %s\r\n", (*cit).first->get_key(), (*cit).first->get_val(), (*cit).second->get_val());

在文件 diff_manager.hpp76 行定义.

77  {
78  return objs_upd_;
79  }

◆ reset()

void acl::diff_manager::reset ( void  )

当重复使用本 diff_manager 进行差异化比较时,需要调用本方法来清空 上一次比较过程中产生的临时内存及对象


该类的文档由以下文件生成: