对象数组的阵列
问题描述:
我需要创建一个非常快速的方式来获取对象列表,我想一个对象数组数组可以工作。也许有不同的方式来做到这一点,所以随时推荐一个备用的实现。我有一组对象,我需要按指定值分组。例如,我将有一组需要通过数字10访问的对象。因此,我会使用数字10找到对象组,然后遍历每个对象以在每个对象上执行任务。对象数组的阵列
10 - Object1, Object2, Object3
11 - Object4, Object5
我需要非常快的访问这些对象,这就是为什么我想对象的数组的数组。我查看了矢量和地图,但完全不了解它们。
我使用g ++编译器在树莓派上使用C++。
请让我知道你的想法,我非常感谢你提前。
答
对象数组阵列通常被称为矩阵。你可以将矩阵想象成一个网格。这将是访问所有对象的最快和最基本的方式。创建一个矩阵声明如下。
int matrix[10][10];
现在填写矩阵的每个点与对象
for(int row = 0; row<10;row++){
for(int column = 0; column<10;column++){
matrix[row][column] = Obj();
}
}
现在的矩阵充满你可以通过一个简单的快循环
访问组5for(int i = 0; i<matrix[].length;i++){
matrix[4] = _________
}
这做最快最简单的方法来尝试你正在做的事情。我希望这有帮助。
+0
感谢您的建议,但是,我试过了,这不起作用,因为我试图添加一个对象到一个int数组。我做错了什么?矩阵[行] [ column] = myObj(); – Edd 2014-09-02 02:18:17
答
对该组对象使用
std::set
。使用std::map
键入这些组。
这应该工作:
std::map<int, std::set<Object>> objects;
你想如'的std :: multimap中'或'的std :: unordered_multimap '? –
ikh
2014-08-30 02:39:05
使用'multimap'是键可以重复,在这种情况下会浪费key的每个对象的'sizeof(key)'。看问题,如果关键是在一个范围内,你可以使用'std :: vector >>'(在外部向量的每个索引中将是该索引的对象,可以使用基本索引跳过索引如果范围是例如1000-2000,如果密钥是分散的,使用'std :: map >',对象集合的搜索是** O(log keys)* *和对象的迭代缓存友好 –
NetVipeC
2014-08-30 02:57:39