我将存储一些由各种数字作为键的对象。大多数数字将没有对象,一些数字将有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/

10-12 17:27
查看更多