动态数组宽度id? 我需要C++中的一些动态数组,其中每个元素都有自己的ID,由int .p/p>表示。

动态数组宽度id? 我需要C++中的一些动态数组,其中每个元素都有自己的ID,由int .p/p>表示。,c++,vector,hashtable,dynamic-arrays,C++,Vector,Hashtable,Dynamic Arrays,数据类型需要以下功能: int Insert()-返回ID 删除(int-ID) Get(ID)-返回元素 我应该使用什么数据类型?我们看了Vector和List,但似乎找不到任何类型的ID。我还看了map和hastable,这些可能有用。但我不确定该选什么 看来最好使用的容器是无序映射。 它是基于散列的。您可以在O(n)中插入、删除或搜索元素 当前无序的_映射不在STL中。如果要使用STL容器,请使用std::map。 它是基于树的。在O(n*log(n))中插入、删除和搜索元素 容器的选

数据类型需要以下功能:

  • int Insert()-返回ID
  • 删除(int-ID)
  • Get(ID)-返回元素

我应该使用什么数据类型?我们看了Vector和List,但似乎找不到任何类型的ID。我还看了map和hastable,这些可能有用。但我不确定该选什么

看来最好使用的容器是无序映射。 它是基于散列的。您可以在O(n)中插入、删除或搜索元素

当前无序的_映射不在STL中。如果要使用STL容器,请使用std::map。 它是基于树的。在O(n*log(n))中插入、删除和搜索元素


容器的选择在很大程度上取决于使用强度。例如,如果您将查找稀有元素,那么vector和list就可以了。这些容器没有find方法,但是
库中包含了它。

看起来最好使用的容器是无序映射。 它是基于散列的。您可以在O(n)中插入、删除或搜索元素

当前无序的_映射不在STL中。如果要使用STL容器,请使用std::map。 它是基于树的。在O(n*log(n))中插入、删除和搜索元素


容器的选择在很大程度上取决于使用强度。例如,如果您将查找稀有元素,那么vector和list就可以了。这些容器没有find方法,但是
库包含它。

一个
std::map
可以为您工作,它允许将一个键与一个值相关联。键应该是您的ID,但是在向映射添加元素时,您应该自己提供它


哈希表是一种基本机制,可用于实现无序映射。它对应于std::unordered_map。

A
std::map
可能适用于您,它允许将键与值关联。键应该是您的ID,但是在向映射添加元素时,您应该自己提供它


哈希表是一种基本机制,可用于实现无序映射。它对应于std::unordered_map。

我可能会使用向量和自由id列表来处理删除,然后索引就是id。这非常容易插入和获取,并且非常容易管理(唯一的技巧是为删除的项目提供自由列表)


否则,您可能需要使用映射,只需跟踪最低未使用id,并在插入时分配它。

我可能会使用向量和自由id列表来处理删除,然后索引就是id。这非常容易插入和获取,并且非常容易管理(唯一的技巧是为已删除的项目提供自由列表)


否则,您可能需要使用映射,只需跟踪最低未使用id并在插入时分配。

a
vector
提供恒定时间随机访问,“
id
”可以简单地作为向量中的偏移量(索引)。
deque
类似,但并不连续存储所有项目

如果ID值可以从0开始(或从0开始的已知偏移量单调递增),则这两种方法都是合适的。随着时间的推移,如果有大量的清除,则
vector
deque
可能会变得稀疏,这可能是有害的

std::map
不会出现人口稀少的问题,但查找会从固定时间移动到对数时间,这可能会影响性能


boost::unordered_map
可能是迄今为止最好的,因为在给定问题的情况下,作为哈希表的最佳情况可能具有最佳的总体性能特征。但是,可能需要使用boost库,但是如果STL实现中有可用的话,
std::tr1
中也有
unordered
容器类型。

A
vector
提供了恒定时间的随机访问,“
id
”可以只是向量中的偏移量(索引)。
deque
类似,但并不连续存储所有项目

如果ID值可以从0开始(或从0开始的已知偏移量单调递增),则这两种方法都是合适的。随着时间的推移,如果有大量的清除,则
vector
deque
可能会变得稀疏,这可能是有害的

std::map
不会出现人口稀少的问题,但查找会从固定时间移动到对数时间,这可能会影响性能


boost::unordered_map
可能是迄今为止最好的,因为在给定问题的情况下,作为哈希表的最佳情况可能具有最佳的总体性能特征。但是,升压库的使用可能是必要的,但是在STD::Tr1中,也有<代码>无序< /COD>容器类型。如果在STL实现中可用的话,

可以使用迭代器作为ID吗?如果我在数组中间删除元素,如果我使用迭代器,ID不会改变吗?你可以将迭代器用作ID吗?如果我删除数组中间的一个元素,如果我使用迭代器,ID不会改变吗?