我要存储一些由各种数字键控的对象。大多数数字没有对象,有些有 1,有些有多个。
std::map<int, std::vector<MyObject>> myObjects;
// or...
std::vector<std::vector<MyObject>> myObjects;
std::vector<MyObject> GetObjectsForNumber( int number )
{
// how best to do this?
if ( -check if there is a vector for the number- )
{
return myObjects[number];
// or...
return myObjects.at(number);
}
else
{
// return empty vector?
}
}
我应该使用 map 还是 vector ,我应该如何实现功能?
最佳答案
您正在寻找的可能是 multimap ,请参阅 http://www.cplusplus.com/reference/stl/multimap/ .
但是您应该指出您的目标到底是什么 - 内存效率、性能?另外,值在键上的“分布”如何?如果这是一个重要的决定,您应该制作原型(prototype)。
P.S.: 不要写
std::vector<std::vector<MyObject>> myObjects;
而是
std::vector<std::vector<MyObject> > myObjects; //note the space between the > >
否则 GCC 会将 >> 解释为运算符>>。
关于C++:由整数键控的对象的映射或 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6917686/