c ++ push_back () внутри карты векторов - PullRequest
5 голосов
/ 14 марта 2011

Я пытаюсь динамически добавлять элементы в вектор, содержащийся в карте, для хранения нескольких массивов объектов "Частица", которые отображаются на разные идентификаторы.Я новичок в языке, и поэтому у меня возникли проблемы с пониманием, если это можно сделать только с помощью итераторов?В этом случае это похоже на излишество.Можно ли получить прямой доступ к вектору внутри карты?Поскольку я могу получить доступ к элементам карты по ключу, и поскольку на ключ имеется только один вектор, кажется, что это должно быть возможно.У меня нет точного кода в качестве примера, но он выглядел бы примерно так:

int currentId = 1;  
map <int, vector<Particle> > particleMap;    
Particle p;  
particleMap[currentId] <access to vector somehow here?> push_back(p);

Я уверен, что мне здесь не хватает какой-то более крупной концепции, но мне нужны данные такого типаструктурировать много, поэтому было бы здорово узнать правильный способ доступа к этим видам «таблиц».

1 Ответ

15 голосов
/ 14 марта 2011
particleMap[currentId].push_back(p);

будет работать нормально.

Существует только один vector для идентификатора;это то, на что вы ссылаетесь с particleMap[currentId].Затем вы просто продолжаете выражение, как если бы вы писали myVector.push_back(p).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...