对象数组的阵列

对象数组的阵列

问题描述:

我需要创建一个非常快速的方式来获取对象列表,我想一个对象数组数组可以工作。也许有不同的方式来做到这一点,所以随时推荐一个备用的实现。我有一组对象,我需要按指定值分组。例如,我将有一组需要通过数字10访问的对象。因此,我会使用数字10找到对象组,然后遍历每个对象以在每个对象上执行任务。对象数组的阵列

10 - Object1, Object2, Object3 
11 - Object4, Object5 

我需要非常快的访问这些对象,这就是为什么我想对象的数组的数组。我查看了矢量和地图,但完全不了解它们。

我使用g ++编译器在树莓派上使用C++。

请让我知道你的想法,我非常感谢你提前。

+1

你想如'的std :: multimap中'或'的std :: unordered_multimap '? – ikh 2014-08-30 02:39:05

+0

使用'multimap'是键可以重复,在这种情况下会浪费key的每个对象的'sizeof(key)'。看问题,如果关键是在一个范围内,你可以使用'std :: vector >>'(在外部向量的每个索引中将是该索引的对象,可以使用基本索引跳过索引如果范围是例如1000-2000,如果密钥是分散的,使用'std :: map >',对象集合的搜索是** O(log keys)* *和对象的迭代缓存友好 – NetVipeC 2014-08-30 02:57:39

对象数组阵列通常被称为矩阵。你可以将矩阵想象成一个网格。这将是访问所有对象的最快和最基本的方式。创建一个矩阵声明如下。

int matrix[10][10]; 

现在填写矩阵的每个点与对象

for(int row = 0; row<10;row++){ 
    for(int column = 0; column<10;column++){ 
      matrix[row][column] = Obj(); 
    } 
} 

现在的矩阵充满你可以通过一个简单的快循环

访问组5
for(int i = 0; i<matrix[].length;i++){ 
    matrix[4] = _________ 
} 

这做最快最简单的方法来尝试你正在做的事情。我希望这有帮助。

+0

感谢您的建议,但是,我试过了,这不起作用,因为我试图添加一个对象到一个int数组。我做错了什么?矩阵[行] [ column] = myObj(); – Edd 2014-09-02 02:18:17

  1. 对该组对象使用std::set。使用std::map键入这些组。

这应该工作:

std::map<int, std::set<Object>> objects;