C++:由整数键控的对象的映射或 vector ?

标签 c++ vector map

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

相关文章:

c++ - 警告 : function uses 'auto' type specifier without trailing return type

matlab - 在 Matlab 中将矩阵与数组组合

c - C vector 的位表示

python - 如何使用带有 *args 的映射在 python 函数调用中解包元组

c++ - Boost::进程管链

C++ ld 返回 1 退出状态

c++ - 数组何时自动初始化为其默认数据类型?

javascript - 使用 ThreeJS 将相机朝它所面对的方向移动

c++ - 映射运算符 [] 和 bool 作为值

字符串和成员函数指针的C++ Map