【发布时间】:2012-05-01 17:12:21
【问题描述】:
有什么方法可以从指向元素的指针中获取元素的索引?具体来说,我需要的是指向 I 点之前或之后的元素的索引(或迭代器)。我知道在使用向量时,您可以轻松地进行算术运算,但在双端队列中就不是那么容易了。
我必须使用双端队列。向量不是一种选择。
【问题讨论】:
-
不,双端队列不会将索引与值一起保存,否则插入和删除将是
O(n)。因此,如果您只有指针,其中k是项目的最大可能索引(即,k == n,如果项目可能在任何地方),则查找索引是O(k)操作。 -
所以获得该索引的唯一方法是在整个双端队列中搜索元素?
-
没错,如果你只有指针,这是唯一的方法。也许您可以以不同的方式访问数据结构?
-
问题是我想在其他数组中保存指向双端队列元素的指针,以便我可以轻松访问和修改它们。与此同时,我从双端队列中推送和弹出元素,这就是我不使用向量的原因。但也许我错了,它可以做得更容易,所以请告诉我。
-
好吧,你可以在双端队列中保存指向你的值的指针。然后,您也可以将相同的指针存储在其他地方并使用它们来访问值。
标签: c++ pointers stl iterator deque