让我把我的问题和背景一起解释一下,这样就更容易理解为什么我要这种特定类型的东西了。我正在开发一个即时通讯器。大多数架构都由我的老师概述,但是实现细节可能有所不同。有一个“引擎”类,eventmanager,用于注册客户机。为了识别它们并方便地删除它们,我使用一个映射(带有客户机ID)或一个带有指针的集合。到目前为止,一切都很好。但是这个事件管理器使用
poll()
(或)
select()
但是没有比这更舒适的地方了
污染()
,因为您每次都必须重新构建数组,这很慢,而且不是很好,我想,如果您要求的话,我可以将自己限制在UNIX环境中)。需要一系列
struct pollfd
. 现在,每当新客户机出现或消失时,都需要重新构建这个数组。要么我手工使用一个动态数组,每次都分配内存(baaaad),要么我使用一个向量,它可以处理新客户机的
结构轮询
在容器的末尾插入非常好,或者说是deque,它可以很好地插入和移除任何地方。现在我的两个问题是:
-
如果我选择
vector
,它是否会自动收缩和移动中间的元素,而不是完全重新分配?和
-
不管怎样,如果是开始的话,那会复制很多,所以我想用deque。是否有数组接口(就像处理向量一样)-
&myVector[0]
)或者它是完全不连续的?