我想使用整数列表作为键,所以首先想到的是使用向量作为键。还有其他方法可以比这更好吗?
编辑:密钥大小会有所不同,某些密钥可能包含数百个整数。 整数值的范围也可以是1到100,000。
答案 0 :(得分:1)
如果没有关于你正在做什么的更多细节,很难肯定地回答,我很害怕。
总的来说,是的,使用>>2<
作为关键可能是最好的方法,因为它是标准的,简单的,并且很容易让未来的维护者理解你的意图。
但是,如果您有约束意味着使用std::vector
将是一个问题,那么可能有其他方法可用。例如,如果您限制了内存,并且您永远不需要从地图中检索原始密钥,那么您可以使用整数作为密钥并在访问之前对向量进行散列。这意味着从不存储向量本身,可能节省大量内存。然而,这将增加复杂性,因为您需要设计适当的散列函数(我不认为std::vector
由标准IIRC提供),处理冲突,以及访问地图isn&# 39;这很简单,需要:std::hash<std::vector<T>>
。
最终,如果使用myMap[MyHashFunc(myVectorOfInts)] = myValue
可以正常使用,那么这就是最佳选择。如果没有,那么更新你的问题,以表明为什么不:)
答案 1 :(得分:0)
如果密钥的大小(序列中的整数数)是固定的并且在编译时已知,则std :: array可能是更好的解决方案。否则,std :: vector是一个很好的解决方案,因为你还没有提到任何关于这个问题的东西,所以它似乎是最好的解决方案。