我见过“侵入式”一词用于描述列表和堆栈等数据结构,但它是什么意思呢?
您能否给出一个介入式数据结构的代码示例,以及它与非介入式数据结构有何不同?
另外,为什么要让它具有侵入性(或非侵入性)?有什么福利待遇?它的缺点是什么?
发布于 2011-02-15 21:43:41
侵入式数据结构需要从它打算存储的元素中获得帮助才能存储这些元素。
让我重新说一遍。当你把一些东西放到数据结构中时,这个“东西”就会以某种方式意识到它就在这个数据结构中。将元素添加到数据结构会更改元素。
例如,您可以构建一个非侵入式二叉树,其中每个节点都有一个对左子树和右子树的引用,以及一个对该节点元素值的引用。
或者,您可以构建一个介入式的,其中对这些子树的引用嵌入到值本身中。
侵入式数据结构的一个例子是可变元素的有序列表。如果元素发生变化,则需要对列表进行重新排序,因此列表对象必须侵犯元素的隐私才能获得它们的协作。即。元素必须知道它所在的列表,并将更改通知给它。
ORM系统通常以侵入式数据结构为中心,以最小化大型对象列表的迭代。例如,如果您检索数据库中所有员工的列表,然后更改其中一个员工的姓名,并希望将其保存回数据库,那么当employee对象发生更改时,就会被告知侵入式员工列表,因为该对象知道它在哪个列表中。
一个非侵入性的列表不会被告知,它必须自己找出发生了什么变化以及它是如何变化的。
https://stackoverflow.com/questions/5004162
复制相似问题