【问题标题】:Getting the index of an element in a deque given a pointer to that element?在给定指向该元素的指针的情况下获取双端队列中元素的索引?
【发布时间】:2012-05-01 17:12:21
【问题描述】:

有什么方法可以从指向元素的指针中获取元素的索引?具体来说,我需要的是指向 I 点之前或之后的元素的索引(或迭代器)。我知道在使用向量时,您可以轻松地进行算术运算,但在双端队列中就不是那么容易了。

我必须使用双端队列。向量不是一种选择。

【问题讨论】:

  • 不,双端队列不会将索引与值一起保存,否则插入和删除将是O(n)。因此,如果您只有指针,其中k 是项目的最大可能索引(即,k == n,如果项目可能在任何地方),则查找索引是 O(k) 操作。
  • 所以获得该索引的唯一方法是在整个双端队列中搜索元素?
  • 没错,如果你只有指针,这是唯一的方法。也许您可以以不同的方式访问数据结构?
  • 问题是我想在其他数组中保存指向双端队列元素的指针,以便我可以轻松访问和修改它们。与此同时,我从双端队列中推送和弹出元素,这就是我不使用向量的原因。但也许我错了,它可以做得更容易,所以请告诉我。
  • 好吧,你可以在双端队列中保存指向你的值的指针。然后,您也可以将相同的指针存储在其他地方并使用它们来访问值。

标签: c++ pointers stl iterator deque


【解决方案1】:

我相信答案是否定的。但是为什么不自始至终使用迭代器而不是指针呢?

【讨论】:

  • 与此同时,我从双端队列中推送和弹出元素。这就是为什么。
  • 但是为什么要使用指针而不是迭代器呢? ... 等待。您是 (1) 将 objects 存储在双端队列中并将 指向 这些对象的指针保存在双端队列中,还是 (2) 将 指针 存储在双端队列中并保持那些相同的指针?如果是前者,那么我认为您最好使用迭代器。如果是后者,那么您需要的是在双端队列中搜索特定项目的能力,这总是很慢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 2018-12-02
  • 2010-12-29
  • 2016-01-23
相关资源
最近更新 更多