2014-08-30 5 views
0

Мне нужно создать очень быстрый способ получить список объектов, и я думаю, что массив массива объектов будет работать. Возможно, существует другой способ сделать это, поэтому не стесняйтесь рекомендовать альтернативную реализацию.Array of Array объектов

У меня есть группа объектов, которые мне нужно группировать по заданному значению. Например, у меня была бы группа объектов, к которой нужно получить доступ с номером 10. Таким образом, я бы нашел группу объектов, используя число 10, а затем перебирал каждый объект для выполнения задач на каждом объекте.

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

Мне нужно очень быстро получить доступ к этим объектам, поэтому я думал о массиве массива объектов. Я просмотрел вектор и карты, но не совсем понял их полностью.

Я использую C++ на малине pi с компилятором g ++.

Пожалуйста, дайте мне знать ваши мысли, и я очень благодарю вас за это заранее.

+1

Хотите, такие как 'станд :: Multimap или' станд :: unordered_multimap '? – ikh

+0

Используется 'multimap', ключ может повториться, в этом случае будет потерять' sizeof (key) 'для каждого объекта ключа. Глядя в вопрос, находится ли ключ в диапазоне, вы можете использовать 'std :: vector >>' (в каждом индексе внешнего вектора будут объекты этого индекса, можно использовать базовый индекс для пропускает индекс, если диапазон составляет, например, 1000-2000, если ключ распространяется, используйте 'std :: map >', поиск коллекции объектов - ** O (ключи журнала) * * Итерация объектов кэширована. – NetVipeC

ответ

0

Массив массивов объектов часто известен как матрица. Вы можете представить матрицу как сетку. Это будет самый быстрый и самый простой способ доступа ко всем вашим объектам. Чтобы создать матрицу, объявите ее, как показано ниже.

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.Я делаю что-то неправильно? matrix [row] [ column] = myObj(); – Edd

1
  1. Используйте группу std::set для группы объектов.

  2. Используйте клавиши std::map, чтобы использовать эти группы.

Это должно работать:

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