C++ 动态向量类容器,但其元素保存其索引?
插入后,所有元素都应该在数组中有固定的位置,直到我从数组中明确删除它们为止。boost或其他任何地方是否有类似的功能?谢谢使用C++ 动态向量类容器,但其元素保存其索引?,c++,containers,C++,Containers,插入后,所有元素都应该在数组中有固定的位置,直到我从数组中明确删除它们为止。boost或其他任何地方是否有类似的功能?谢谢使用无序地图或地图 或者,使用向量,将要删除的插槽设置为无,而不是实际删除它。使用无序映射或映射 或者,使用向量,将要删除的插槽设置为none\t,而不是实际删除它。不是“删除”元素,而是要将其值设置为null(或其他类似的“无值”)。然后,一切都会按照您的要求保持不变。您不想“删除”一个元素,而是想将其值设置为null(或其他“无值”等效值)。然后,一切都会按照您的要求保持
无序地图
或地图
或者,使用
向量
,将要删除的插槽设置为无
,而不是实际删除它。使用无序映射
或映射
或者,使用
向量
,将要删除的插槽设置为none\t
,而不是实际删除它。不是“删除”元素,而是要将其值设置为null(或其他类似的“无值”)。然后,一切都会按照您的要求保持不变。您不想“删除”一个元素,而是想将其值设置为null(或其他“无值”等效值)。然后,一切都会按照您的要求保持不变。有趣。您的目标是公开从整数到插槽的映射,这些插槽可能包含一个值吗?或者,您的目标是保留每个元素的底层地址和内部数组本身开头的底层地址吗?您可能有一个原因,即在“删除”元素后,需要保留元素的位置或从整数键到元素的映射。这是什么原因
<> >代码>图>代码>或代码>矢量< /代码>实现,因为<代码>删除< /代码>,<代码>擦除< /代码>,<代码>查找< /代码>等。操作将删除、重新排列或检查您认为“被删除”的整数。
不幸的是,我认为在这种情况下,您可能需要使用一个包装器来包装
vector
或vector
,这取决于您如何定义remove
。您的目标是公开从整数到插槽的映射,这些插槽可能包含一个值吗?或者,您的目标是保留每个元素的底层地址和内部数组本身开头的底层地址吗?您可能有一个原因,即在“删除”元素后,需要保留元素的位置或从整数键到元素的映射。这是什么原因
<> >代码>图>代码>或代码>矢量< /代码>实现,因为<代码>删除< /代码>,<代码>擦除< /代码>,<代码>查找< /代码>等。操作将删除、重新排列或检查您认为“被删除”的整数。
不幸的是,我认为在这种情况下,您可能需要使用包装器围绕
向量
或向量
,这取决于您如何定义删除
,您所说的“固定位置”是什么意思?除非您从向量的开头或中间插入或删除元素,其元素的索引不会改变。@James McNellis:我的意思是,当我插入或删除任何元素时,这不会影响其他元素的位置。例如,如果我有一个包含500个元素的容器,并且我删除了所有前499个元素,那么最后一个元素应该是第500个元素,并且容器的大小也不应该改变。@serejko:好的。不要从中间添加或删除对象,或者,不要从中间添加或删除对象,而是用默认构造的对象或一些哨兵值替换它们。@James McNellis:嗯,我没想到,谢谢!“固定位置”是什么意思?除非从向量的开头或中间插入或删除元素,否则其元素的索引不会改变。@James McNellis:我的意思是,当我插入或删除任何元素时,这不会影响其他元素的位置。例如,如果我有一个包含500个元素的容器,并且我删除了所有前499个元素,那么最后一个元素应该是第500个元素,并且容器的大小也不应该改变。@serejko:好的。不要从中间添加或删除对象,或者,不要从中间添加或删除对象,而是用默认构造的对象或一些哨兵值替换它们。@James McNellis:嗯,我没想到,谢谢!