- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。
9年前关闭。
我可以想到 C++ 中的三个操作,它们在某种意义上可以被描述为具有“恒定”的复杂性。我已经看到一些关于这意味着什么的争论(*),在我看来,我们可以说“所有这些操作都是恒定的,但有些比其他操作更恒定”:-)
( 编辑 2 : 如果您已经认为自己知道答案,请在过早进入之前阅读此问题的一些辩论:What data structure, exactly, are deques in C++? 很多得分很高的人正在争论什么'常数'的意思。我的问题并不像你想象的那么明显!)
( 编辑 :我不需要了解“复杂性”的含义。我想要一个明确的答案,也许是来自 C++ 标准的引号,它告诉我们什么应该是恒定的。处理器滴答声,真实世界的时间,还是其他什么?在其他线程上,有些人认为时间与 C++ 标准的要求完全无关。)
标准中的这些复杂性保证是否适用于操作的运行时?或者他们是否只是指定了所包含对象可能发生的(最大)复制/移动次数? “摊销”究竟是什么意思?
1. 给定一个(非空)vector<int> v
,以下在运行时显然是恒定的:
swap(v.front(), v.back());
list<int> l
,做一个
push_back
很简单。恰好分配了一个新项目,并打乱了链表中的一些指针。每个 push_front 都涉及一个分配,总是具有相同的内存量,因此这显然是相当“恒定”的。但是,当然,进行分配的时间可能会有很大差异。内存管理可能需要花费大量时间才能找到一些合适的空闲内存。
push_back
在
vector<int>
更是难以预料。大多数情况下,它会非常快,但它必须时不时地为所有数据重新分配空间并将每个元素复制到新位置。因此,它在运行时的可预测性不如单个
list::push_front
,但它仍然被称为常数(摊销)。平均而言,向一个 vector 添加大量数据将需要一个与添加量无关的复杂性,这就是为什么它被称为“摊销常数”时间。 (我对吗?)
int
以避免具有另一种类型的复杂性。例如,
vector< vector<int> >
推理可能有点复杂,因为( vector 的) vector 的每个元素可能具有不同的大小,例如,交换两个元素并不像
那样恒定。 1. 以上。但理想情况下,我们可以回答所有
vector<T>
,不仅仅是
T=int
.
最佳答案
复杂性总是相对于特定变量或变量集来表述的。因此,当标准谈论恒定时间插入时,它谈论的是相对于列表中项目数量的恒定时间。也就是说,O(1) 次插入意味着当前列表中的项数不影响插入的整体复杂度。列表中可能有 500 或 50000000 个项目,插入操作的复杂度将相同。
例如,std::list
有 O(1) 次插入和删除;插入的复杂性不受列表中元素数量的影响。然而,内存分配器的复杂性很可能取决于已经分配的东西的数量。但是由于 O(1) 是在谈论列表中的项目数,因此它不包括在内。也不应该,因为那样我们将测量内存分配器的复杂性,而不是数据结构。
简而言之:这是一个不同的衡量标准。
It implies that we are free to implement our algorithm as badly as we like, including one where the time isn't really constant in any pragmatic sense, but where we have respected the number of 'operations' on the contained objects.
std::list
使用一个内存分配器,对于删除操作是 O(log(n))(其中
n
是分配的数量)。但是,相对于列表中的项目数,删除列表中的元素仍然是 O(1)。
And what exactly does 'amortized' mean?
std::vector
在后面插入了“摊销固定时间”。因此,如果我们取对象并对其执行无限次插入,则复杂性的渐近极限将与“恒定时间”插入没有什么不同。
关于c++ - "constant"复杂度的真正含义是什么?时间?复制/移动的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8631531/
我有几个带有视频和图像的 Bootstrap slider 。在 slider 之外,我想要一个可以转到包含视频的幻灯片的按钮。包含视频的幻灯片的数量因 slider 而异。我想做的是获取幻灯片的数量
我在编写一个查询时遇到了一些问题。 我有一个由文件及其大小(以字节为单位)组成的表。它看起来像这样: FileUrl | FileSize ------------------ xyz.docx |
我有一个带 iframe 的网站和一个带另一个 iframe 的网站,所以它是一个 iframe 内嵌另一个 iframe(都在不同的域上)。那么有没有办法从父div或父主div的url(parent
以下表达式在 JavaScript 中给出了特殊的结果。 typeof (5 + "7") // Gives string typeof (5 - "7") // Gives number 如
我有一个名为“交易”的表,每当有人在我的网站上进行购买时,我都会在其中输入用户 ID、购买类型和金额。 我想向每个用户显示过去 7 天的这些统计信息。 目前,我有这个: $data = array()
我一整天都在努力寻找解决这一挑战的办法。 我有一张 table : id | amount | type | date |
我正在尝试在 10 个数据节点的集群中测试 Map reduce 程序的性能。在此过程中,我使用了 5 个 Reducers,然后是 10 个等等。 我在想增加 reducer 的数量也会使工作完成得
我正在使用 html5 输入 type="number"。我想监视此输入的变化,但是: 因为在支持它的浏览器中 它有旋转控件 我不能只监视 .keyup, 因为我不想等待它失去焦点,所以我不能只监视
我的购物车表格有问题。我创建了一个如下所示的表格: SQL Fiddle 我的问题是我希望能够选择产品 ID,并计算该产品 ID 在表格中重复的次数,以便我可以显示用户在购物车中拥有的商品数量。 寻找
我使用许多包含来显示我网站的一小部分。使用许多 include 是否合适,或者我应该减少它们(尽可能多)。包含函数要多花多少时间? 我的主页加载速度很慢。有什么方法可以让它加载更快。 (我的主页每天在
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: length of array in function argument 我的数组大小是5。例如: arrC
是否有标准的 Python 方法来处理 Python 中的物理单位/数量?我看到了来自不同领域(如物理学或神经科学)的不同模块特定解决方案。但我更愿意使用标准方法而不是“孤岛”解决方案,因为其他人应该
基本上就像标题所说的那样,有没有办法从 JavaScript 程序中查看事件循环中当前存在多少个 promise ?最好在 Deno 上。 最佳答案 Deno v1.26 添加了一个内部 API,可用
我只是想知道大型项目-比如说航空公司的预订系统,它可能有多少类/对象。 对象:客户,飞机,机场,路线,机票,订单。这就是我能想到的。该项目可能是成千上万的代码行,那么是否可能会有更多的类(执行与对象无
如果有办法限制Scala中未处理的 future 数量,我将无法提供资金。 例如下面的代码: import ExecutionContext.Implicits.global for (i
从昨天开始,我一直在努力做到这一点,尽管还没有运气。我找到了解决方案,在我想要完成的事情上总是有细微的差别。 我试图获得所有可能的组合,稍微像这样:combination_k ,但我也希望相同的项目与
我正在尝试更新 1500 个 QuickBooks Online 库存项目的现有数量。我可以从商店中提取 1500 种产品。 这个更新可以做吗?我看到手头没有数量的物品: https://develo
我想与工作人员一起扩展应用程序。 可能有 1 名 worker 或 100 名 worker ,我想无缝扩展它们。 这个想法是使用副本集。然而,由于特定领域的原因,扩展它们的适当方法是让每个工作人员知
Android Studio 有没有办法显示 XML 布局中存在的 View 数量?众所周知,布局应该包含 <=80 个 View ,因此超过此值就会出现此警告,因此告知数量会非常有帮助。 Layou
虽然编码时总是出现有关 IBOutlet 保留计数的相同问题:从 NIB 取消归档对象后保留计数?何时对 IBOutlet 使用 @property?设置时保留还是分配? Mac 和 iPhone 之
我是一名优秀的程序员,十分优秀!