autodataming的个人博客分享 http://blog.sciencenet.cn/u/autodataming

博文

drugpocket: c++ vasp SET

已有 2488 次阅读 2015-12-27 17:55 |个人分类:Pocket_C++|系统分类:科研笔记

大约花了一周时间终于搞懂了set。set代码来源于VASP,http://www.cse.lehigh.edu/~chen/software.htm.

VASP.zip

-------------------------------------------

指针就是地址,地址+类型就是数据。 另外地址也可以当成值来使用。

-------------------------------------------

我对源代码set部分进行了提取处理

settest_20151227.zip

,只关心set。

--------------------------------------------------

感觉这个set应该是个不完全版本,里面有好多冗余的信息。

----------------------------------------------------

指针构建的数据结构如下图所示

primativesSet  * primSet=new primativesSet();

//  sz = (set_t) sizeof(set_head_t) + c * sizeof(int) + 2 * tsz * sizeof(int);//origin
  sz = (set_t) sizeof(set_head_t) + c  + 2 * tsz;//czq

set_t 本来就是int 型的指针,所以加c*sizeof(int)字节没有必要,+c个int 就是+c*sizeof(int)

typedef struct
{
 int capacity;
 int size;        // the num of objs
 
 int table_size;

 word_t properties; // unsigned int

 ptr_t header;
} set_head_t;

set_head_t 一共占20个字节。

 if (properties & SP_MAP) sz += c;//czq

所以sz=(set_t) sizeof(set_head_t) + c  + 2 * tsz+c;

2添加数据成员

疑惑1

疑惑1. 这个probe函数不知道什么意思?
在我的测试当中index=id;为什么需要这个函数?  
index = probe(ht, bt, cap, tsz, id);// I think  index=id;




新开辟的内存的容量是上次的2倍,然后把旧内存中的信息copy到新内存上,同时释放旧内存。

   free_set(s);  尚未调试






https://blog.sciencenet.cn/blog-950202-946241.html

上一篇:c++: pimpl 机制 class 前置
下一篇:测试利器selenium
收藏 IP: 202.127.19.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-19 18:39

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部