【发布时间】:2024-01-12 22:36:01
【问题描述】:
我需要一个操作如下的索引关联容器:
最初为空,大小=0。
当我向它添加一个新元素时,它会将其放置在索引 [size] 处,这与向量的 push_back 非常相似。它增加大小并返回新添加元素的索引。
如果元素已经存在,则返回它出现的索引。
Set 似乎是理想的数据结构,但我没有看到任何类似 get 的东西 查找操作的索引。在集合上查找返回元素的迭代器。
在这种情况下,用 set.begin() 取不同是正确的做法吗?
【问题讨论】:
-
如果从中间移除一个元素会怎样。它背后的元素的索引应该改变还是不应该改变?
-
我认为@sbi 的目标是:如果索引在删除后不发生变化,
std::map将完美运行。 -
@Thomas:我也这么认为,直到我意识到他想检查值是否已经存在。这是
std::map中的 O(n)。 -
@sbi:有一段时间你几乎说服了我。但我们会将值映射到索引:
std::map<ElementType, int>。 -
@Thomas:但是按索引查找将是 O(n)。他要找的可能是一个多索引容器。
标签: c++ set containers indexed