我将存储一些由各种数字作为键的对象。大多数数字将没有对象,一些数字将有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 ,应该如何实现该功能?
最佳答案
您正在寻找的可能是多图,请参见http://www.cplusplus.com/reference/stl/multimap/。
但是您应该指出您的目标到底是什么—内存效率,性能?另外,值在键上的“分布”如何?如果这是一个重要的决定,则应原型(prototype)设计。
附言:不要写
std::vector<std::vector<MyObject>> myObjects;
反而
std::vector<std::vector<MyObject> > myObjects; //note the space between the > >
否则,GCC会将>>解释为运算符>>。
关于c++ - C++:整数键对象的映射或 vector ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6917686/