这段英文是什么意思7

1.8AnotherImplementation—‘‘Bag’’7____________________________________________________... 1.8 Another Implementation — ‘‘Bag’’ 7
___________________________________________________________________________

int differ (const void * a, const void * b)
{
return a != b;
}

Objects differ exactly when the array indices representing them differ, i.e., a simple
pointer comparison is sufficient.

We are done — for this solution we have not used the descriptors Set and
Object but we have to define them to keep our C compiler happy:

const void * Set;
const void * Object;

We did use these pointers in main() to create new sets and objects.

1.8 Another Implementation — Bag

Without changing the visible interface in Set.h we can change the implementation.
This time we use dynamic memory and represent sets and objects as structures:

struct Set { unsigned count; };
struct Object { unsigned count; struct Set * in; };

count keeps track of the number of elements in a set. For an element, count
records how many times this element has been added to the set. If we decrement
count each time the element is passed to drop() and only remove the element
once count is zero, we have a Bag, i.e., a set where elements have a reference
count.

Since we will use dynamic memory to represent sets and objects, we need to
initialize the descriptors Set and Object so that new() can find out how much
memory to reserve:

static const size_t _Set = sizeof(struct Set);
static const size_t _Object = sizeof(struct Object);

const void * Set = & _Set;
const void * Object = & _Object;

new() is now much simpler:

void * new (const void * type, ...)
{ const size_t size = * (const size_t *) type;
void * p = calloc(1, size);

assert(p);
return p;
}

delete() can pass its argument directly to free() — in ANSI-C a null pointer may be
passed to free().

add() has to more or less believe its pointer arguments. It increments the
element’s reference counter and the number of elements in the set:
展开
 我来答
飘逸凌菲
2009-05-30 · TA获得超过1498个赞
知道答主
回答量:254
采纳率:0%
帮助的人:0
展开全部
18又实施——“包”
┅_____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____

智力不等(常量空了、空* * b)。
{
返回一个! = b。
}

元素对象不同也就是他们在数组中对应的序号不同,也就是说,一个简单的
指针比较来说已经足够了。

我们正在做-解决这个问题,我们没有使用描述符和
但我们必须确定对象来保持我们的C编译器的快乐。

恒无效;*
恒无效*对象。

我们使用这些链接在创造新设置和对象。

18又实施-袋

不可见的界面,我们可以改变Set.h实施。
这次我们使用动态记忆和代表和物体的结构。

集合{符号计算;>)。
{ > >符号计算,物体的设置*,。

计数追踪的元素在一套。为一个元素,计数
有多少次这个记录的元素被添加到设置。如果我们递减
计算每次元素是通过下降(),只有移除元素
一旦计数为0,我们有一个袋子,即把元素有一个参考
计数。

既然我们将会使用动态内存来代表和目标,我们需要
初始化对象的描述,使新()可以找到多少
记忆保留。

静态协议的作用是常量大小长度)>)。
静态常量大小_ t对象长度>刊于《对象)=。

设置失效* =和色彩的作用。
恒空性客体对象= &。

新的()现在是简单得多。

无效的* *型新(常量无效,…)
{常量尺寸大小= *(t��t)常量大小型,
无效的* p = calloc(1,尺寸)。

断言(p)。
返回p。
}

删除其参数可通过直接向自由()-在ansi - c空指针是可能的
通过对自由的()。

加()或多或少地相信它的指针参数。它增加了
元素的参考柜台的元素个数设置:
yesohok
2009-05-30 · TA获得超过3345个赞
知道小有建树答主
回答量:567
采纳率:0%
帮助的人:128万
展开全部
don't be so crazy?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式