问题标签 [containers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2758 浏览

design-patterns - 如果主题是一个巨大的容器,你如何有效地实现观察者模式?

我们都知道观察者模式:您有一个主体能够通知和更新其状态变化的观察者列表。现在假设您要观察的对象是一个容器,您要观察容器本身,即元素的添加和删除,以及包含的元素,即容器元素的状态更新。

当您在容器中存储大量对象时,您将如何实现更新机制以便在元素插入和删除方面快速?尤其,

  • 你会在观察者的本地副本中使用相同类型的容器吗?
  • 观察者应该使用容器的明智选择吗?(例如,即使您正在观察链表,总是使用平衡树会更快吗?)
  • 你如何快速将一个迭代器翻译成被观察的容器到一个迭代器到观察者的容器?(对于数组来说微不足道,对于链表来说很难?)

例如,如果您的容器是一个链表,那么您可以在恒定时间内插入元素。如果 m 个观察者必须遍历包含 n 个元素的列表,则更新需要 O(n * m) 预期时间。

如果你的容器是一个数组,那么改变一个元素需要恒定的时间,如果你传递元素的索引,更新 m 个观察者需要 O(m),如果观察者必须遍历数组,则需要 O(n * m)。

如果有帮助,请考虑以下示例:

示例 1. 你正在编写一个操作系统。您要观察的主题是文件系统及其文件。您的视图是文件浏览器、索引器和其他应用程序。您想在添加、删除或修改文件时更新观察者。

示例 2。您正在编写一个地址簿应用程序,它应该能够处理纽约这样大小的城市。您要观察的主题是您的记录容器(一个人及其地址、电话号码、电子邮件......)。您的观察者是多个视图,当您添加、删除或修改记录时,它们应该会自动更新。(人们可以想象一个视图,其中包含居住在 53 街的人的列表,另一个在地图上为姓氏为 Doe 的每个人绘制点)。

您如何处理完整的目录子树被删除或“53rd St”重命名为“Dijkstra St”的情况?

0 投票
5 回答
4088 浏览

c++ - 用于 A* 优先级队列的 C++ 集合与向量 + 堆操作

make_heap/push_/pop_什么时候使用 std::set 比使用 std::vector 以及A* 操作中的优先级队列更有效(时间) ?我的猜测是,如果打开列表中的顶点很小,则使用向量是更好的选择。但是有人有这方面的经验吗?

0 投票
2 回答
2870 浏览

c++ - 指针容器

我在声明指向类实例的 STL Set 指针时遇到了一些麻烦。更具体地说,我有这种情况:

上面的代码不起作用。编译器说它没有找到成员 SimulatedDiskFile::comparator() 函数。如果我把这个声明的函数(在结构之外),编译器说它需要一个类型。

现在我的疑虑在这里(我猜不仅是一个,而且是相关的):

  • 一组指针的正确声明是什么?
  • 比较指针的比较函数的正确声明是什么?

在发布之前,我确实在很多地方查找过,但我发现这些引用令人困惑,并且与我的特殊情况不太相关(就像我认为的那样愚蠢微不足道 - 实际上,也许这就是原因)。所以,任何好的链接也有很大的帮助!

提前致谢!

0 投票
3 回答
287 浏览

c++ - C++容器/迭代器依赖问题

我正在研究一个看起来像这样的容器类:

还有一个与之匹配的迭代器类,如下所示:

我的问题是......两个类都需要根据另一个类来实现。我不确定如何在迭代器中引用容器,例如,因为定义迭代器时,容器还没有定义。

怎么可能做到这一点?

比利3

0 投票
1 回答
1736 浏览

python - 在 Python 中模拟成员资格测试:将 __contains__ 正确委派给包含对象

我已经习惯了 Python 允许一些巧妙的技巧将功能委托给其他对象。一个例子是委托给包含的对象。

但是,当我想委托 __contains __ 时,我没有运气:

我得到:

我做错了什么?当我调用 a.__contains __(1) 时,一切都很顺利。我什至尝试在 A 中定义一个 __iter __ 方法,以使 A 看起来更像一个可迭代的,但它没有帮助。我在这里错过了什么?

0 投票
2 回答
4127 浏览

containers - DNN 容器

这可能是一个普遍的问题,但我似乎无法弄清楚。DNN 中的容器是什么?皮肤本质上是整个门户的布局和配色方案。那么容器是桌面模块的皮肤吗?

对不起,如果这个问题是新手。我对 DNN 还没有信心,正在阅读文档。但是我很快就需要这个答案。

干杯。

0 投票
1 回答
560 浏览

wpf - Caliburn 是否提供了一种从任何地方获取对容器的引用的方法?

我目前正在搞乱 Rob Eisenberg 的 Caliburn 框架。查看http://caliburn.codeplex.com上提供的文档时,有一个如何从容器解析 Caliburn 服务的示例。

大致是这样的:

但是,我缺少的是一种在应用程序中的任何位置获取对容器的引用的方法。像这样:

我是否必须构建一个自定义静态类来保存对容器的引用,或者 Caliburn 中是否已经内置了一些东西?

提前致谢并致以最诚挚的问候!

0 投票
4 回答
82 浏览

containers - 检查内容唯一性的容器

是否有任何语言的数据类型/容器在插入项目之前检查内容的唯一性而不是值或索引?

0 投票
4 回答
6325 浏览

c++ - C ++中集合/容器的接口/超类

我来自 Java 世界,目前正在构建一个小型 c++ 程序。我有一个对象可以做一些工作,然后将工作结果作为列表返回。

现在一天后我改变了对象的行为,将结果保存在一个集合中,以避免容器中的重复。但是我不能简单地返回集合,因为我第一次使用了一个列表作为接口。是否有一个通用的容器接口可以用来指定我的对象的接口而忘记我在内部使用的容器类型?

目前我正在创建一个添加所有值的集合,然后从集合中创建一个列表:

似乎有点奇怪。

0 投票
2 回答
1154 浏览

.net - .NET 中的双向映射

是否有可用于双向查找的 .NET 数据结构?

这就是问题所在:序列化。我的对象包含一个指向 10 个预定义静态对象之一的字段。写入文件时,我写了一个字符,表示正在引用 10 个对象中的哪一个。此时,我需要一个查找数据结构,它允许我根据被引用的对象获取字符代码。反序列化时,我需要做相反的事情。我可以想到很多其他地方可以使用这种数据结构。