问题标签 [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 投票
3 回答
17307 浏览

c++ - 泛型迭代器

我正在尝试找到一种访问一组容器的通用方法。除了另一个自定义列表之外,我还有一个标准向量和列表。

自定义列表定义了一个迭代器;

适当的运算符重载。

理想情况下,我想这样做;

但显然这些都是不同类型的迭代器。但是,我可以假设所有容器都是同一类型。

有没有优雅的方法来解决这个问题?

0 投票
12 回答
21614 浏览

c++ - 动态排序的 STL 容器

我对 STL 相当陌生,所以我想知道是否有任何可动态排序的容器?目前,我目前的想法是将向量与各种排序算法结合使用,但我不确定是否有更合适的选择,因为将条目插入排序向量的(大概)线性复杂性。

为了“动态地”澄清,我正在寻找一个可以在运行时修改排序顺序的容器 - 例如按升序对其进行排序,然后按降序重新排序。

0 投票
4 回答
27045 浏览

containers - 将原始 .aac 文件包装到 .m4a 容器中的最简单方法是什么

这个问题是从以下问题溢出的:

如何以编程方式将 mp3 转换为 iTunes 可播放的 aac/m4a 文件?

无论如何,我学会了如何创建 aac 文件,然后我发现 aac 不仅仅是具有不同文件扩展名的 m4a 文件。事实上,我需要以某种方式将 aac 包装到一个 m4a 容器中。理想情况下,我可以简单地调用命令行。

0 投票
3 回答
6997 浏览

c++ - 双索引的最佳容器

设置允许双索引的容器的最佳方法是什么(在 C++ 中)?具体来说,我有一个对象列表,每个对象都由一个键索引(每个键可能多个)。这意味着一个多图。然而,这样做的问题在于,它意味着查找对象位置的方法可能比线性查找更糟糕。我宁愿避免重复数据,所以让每个对象保持它自己的坐标并且必须在地图中移动自己会很糟糕(更不用说移动你自己的对象可能会在成员函数中间接调用你的析构函数!)。我宁愿一些容器通过对象指针和坐标维护索引,并且对象本身保证稳定的引用/指针。然后每个对象可以存储一个迭代器到索引(包括坐标),充分抽象,并知道它在哪里。Boost.MultiIndex 似乎是最好的主意,但它非常可怕,我不希望我的实际对象需要是 const。

你会推荐什么?

编辑:Boost Bimap 看起来不错,但它提供稳定的索引吗?也就是说,如果我更改坐标,对其他元素的引用必须保持有效。我想使用指针进行索引的原因是因为对象没有内在的顺序,并且指针可以在对象更改时保持不变(允许它在 Boost MultiIndex 中使用,IIRC 确实提供了稳定的索引)。

0 投票
2 回答
16691 浏览

c++ - 为什么 std::stack 默认使用 std::deque ?

由于要在堆栈中使用容器所需的唯一操作是:

  • 背部()
  • 推回()
  • pop_back()

为什么它的默认容器是双端队列而不是向量?

deque 重新分配是否在 front() 之前提供元素缓冲区,以便 push_front() 是一种有效的操作?这些元素是不是被浪费了,因为它们永远不会在堆栈的上下文中使用?

如果以这种方式使用双端队列而不是向量没有开销,为什么priority_queue 的默认值也是向量而不是双端队列?(priority_queue 需要 front()、push_back() 和 pop_back() - 与堆栈基本相同)


根据以下答案更新:

看起来 deque 通常实现的方式是固定大小数组的可变大小数组。这使得增长比向量(需要重新分配和复制)更快,所以对于像堆栈这样的东西,它都是关于添加和删除元素的,deque 可能是一个更好的选择。

priority_queue 需要大量索引,因为每次删除和插入都需要运行 pop_heap() 或 push_heap()。这可能使向量成为更好的选择,因为无论如何添加元素仍然是摊销常数。

0 投票
3 回答
2870 浏览

c++ - 指针和容器

我们都知道 RAW 指针需要包装在某种形式的智能指针中才能获得 Exception 安全的内存管理。但是当涉及到指针容器时,问题变得更加棘手。

std 容器坚持包含的对象是可复制的,因此这排除了 std::auto_ptr 的使用,尽管您仍然可以使用 boost::shared_ptr 等。

但也有一些 boost 容器明确设计用于安全地保存指针:
请参阅指针容器库

问题是:在什么情况下我应该更喜欢使用 ptr_containers 而不是 smart_pointers 容器?

0 投票
27 回答
77763 浏览

c++ - 为什么使用迭代器而不是数组索引?

取以下两行代码:

还有这个:

我被告知第二种方式是首选。为什么会这样?

0 投票
3 回答
4245 浏览

apache-flex - Flex - 单击封闭组件时避免容器上的单击事件

我有一个 Flex 应用程序,我在其中使用 Canvas 来包含其他几个组件。在那幅画布上有一个按钮,用于调用通过系统的特定流程。单击 Canvas 上的任何其他位置应会导致出现详细信息窗格,其中显示有关此控件表示的记录的更多信息。

我遇到的问题是,因为每当用户单击按钮时按钮都位于画布内,所以在按钮和画布上都会触发单击事件。如果用户单击另一个组件覆盖的区域,是否有任何方法可以避免在 Canvas 对象上触发单击事件?

我创建了一个简单的小测试应用程序来演示这个问题:

就目前而言,当您单击按钮时,您将在文本框中看到两个条目,“Button Clicked”,然后是“Canvas Clicked”,即使鼠标只单击了一次。

我想找到一种方法可以避免进行第二个条目,这样当我单击按钮时,只会创建“单击按钮”条目,但是如果我要单击画布中的其他任何位置,则会出现“单击画布”条目仍然会出现。

0 投票
3 回答
1678 浏览

.net - IoC 容器 - 哪个最好?(。网)

我想了解人们对 IoC 容器的使用情况。我读过一些关于温莎城堡的好东西,但我知道很多人使用 StructureMap、Unity、Ninject 等。

提到的那些(以及我忽略的)之间有什么区别。强项?弱点?更合适(比如 StructureMap 对 ABC 很好,但对 XYZ 不太好)?

0 投票
2 回答
1186 浏览

java - 从 Java 客户端调用 Web 服务

我有一个在 Tomcat 中运行的简单 Web 应用程序。我需要从此 Web 应用程序调用 Web 服务,但我不知道该怎么做。根据您使用的是托管环境还是非托管环境,似乎有两种方法:

JNDI 服务查找(托管)

JAX-RPC ServiceFactory(非托管)

...那么我应该使用哪种技术?