具有停用元素的 C++ 容器 [关闭]

Posted

技术标签:

【中文标题】具有停用元素的 C++ 容器 [关闭]【英文标题】:C++ container with deactivating elements [closed] 【发布时间】:2015-01-16 15:14:35 【问题描述】:

我需要遍历元素容器,并且在某些情况下(当事件发生时)我需要停用某个元素,以便通过容器的迭代不考虑此类元素。然而,一段时间后这个元素被激活,它应该出现在迭代中。

我的选择是使用 std::list,但是插入和删除元素可能会非常耗时。有更好的选择吗?

【问题讨论】:

从列表中插入和删除既快速又便宜,我们在这里谈论多少元素? 它可以变化,从小数到非常大的数。但是,让我们考虑小数字。 您的评论没有回答我的问题,事实仍然是从列表中插入和删除很快 您可以使用容器来存放实际元素,并使用 std::list 指针快速添加/删除元素。 为什么要不断添加和删除项目?成员函数isActive() 还不够吗,直接跳过那些返回false 的? 【参考方案1】:

您可以根据列表或最适合您需要的任何容器创建自己的可迭代类。

这个新容器应该具有标记项目有效/无效的方法,以及一个遍历底层容器的所有元素但跳过已标记为无效的元素的迭代器。

如果速度是一个问题,您可以在新类中添加您喜欢的任何优化,以最大限度地减少对底层容器的迭代(例如,存储有效元素的范围)。

【讨论】:

什么是“可迭代类”?你是说容器吗? 没错,我就是这个意思

以上是关于具有停用元素的 C++ 容器 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

STL C++ 中的容器 [关闭]

vector 可以成为 C++ 中队列的容器吗? [关闭]

具有最快“存在”搜索的 C++ 容器(向量/数组/等)

C++中如何把list容器的元素复制到另一个list容器中

c++基础——容器

c++中容器总结