Надеюсь, я понимаю ваш вопрос:
Во-первых, чтобы отправить сообщение от одного агента другому, вы можете использовать функцию отправки. Если ваше сообщение отправляется от агента1 к агенту2, чтобы отправить X, вы будете использовать: send (X, agent2)
Во-вторых, в соединениях с вашим агентом вы будете определять сообщения как int и в полученном вами сообщении. можно сделать Y=Y+msg;
Обратите внимание, что msg - это X, полученный от агента 1.
РЕДАКТИРОВАТЬ: отправленное сообщение можно прочитать только в элементе соединений, как я уже говорил ... в вашем случае, когда вы используете переменную-посредник при переходе, вы используете переменную-посредник агента, а не ту, которая было отправлено. Единственный способ сделать это так, как я только что показал вам.
Я просто наткнулся на Ваш вопрос, надежда не слишком поздний.
Я рекомендую большую библиотеку (с открытым исходным кодом) по имени Loki. Это имеет основанную на векторе реализацию ассоциативного контейнера, который является общедоступной заменой для станд.:: карта, названная AssocVector.
Это предлагает лучшую производительность для доступа к элементам (и худшую производительность для вставок/удалений).
Библиотека была записана автором Andrei Alexandrescu современного Дизайна C++.
Это также содержит некоторый другой действительно изящный материал.
Если бы Вы ничто не можете найти подходящим, я просто перенес бы станд.:: вектор, чтобы сделать вид () на вставке и реализации находит () использующий lower_bound (). Это должно быть прямым, и столь же эффективным как настраиваемое решение.
Если набор или карта действительно будут маленькими, то производительность, полученная путем микрооптимизации структуры данных, будет иметь мало ни к каким значимым эффектам. Вы сохраните, возможно, одну или две памяти (чтение: кэш) поиски при поиске крошечного дерева по сравнению с крошечным вектором, который в большом изображении незначителен.
Однако Вы могли дать hash_map попытку. Поиски ключом, как гарантируют, будут работать в постоянное время.
Я не знаю никакую подобную реализацию, но существуют некоторые функции, которые помогают работе с отсортированными векторами уже в STL, такой как lower_bound
и upper_bound
.
Возможно, Вы ищете и незаказанный набор незаказанной карты. Попытайтесь смотреть на TR1, незаказанный контейнеры, которые полагаются на хеширование или Повышение. Неприказанная контейнерная библиотека. Под интерфейсом я не уверен, используют ли они действительно станд.:: вектор, но я держал бы пари, что на это стоит смотреть.