Java or C++ for my particular agent-based model (ABM)?
I unfortunately need to develop an agent-based model. My background is C++; I'm decent but not a professional programmer. My goal is to determine whether, my background aside for the moment, the following kind of algorithm would be faster or dramatically easier to write in C++ or Java.

<ol><li>My agents will be of class <code>Host</code>. Their private member variables include their infection and immune statuses (type <code>int</code>) with respect to different strains. (In C++, I might use an <code>unordered_map</code> or <code>vector</code> to hold this information, depending on the number of strains.) I plan to keep track of all hosts in a vector, <code>vector&lt Host *&gt hosts </code>. </li>
<li>The program will need to know at any time all the particular hosts infected with a particular strain or with immunity to a particular strain. For each strain, I could thus maintain two separate structures, e.g., <code>vector&lt Host *&gt immune </code> and <code>vector&lt Host *&gt infectious </code> (I might make each two-dimensional, indexed by strain and then host).</li>
<li>Hosts can die. It seems like this creates a mess in C++, in that I would have to find the right individual to kill in <code>host</code> and search through the other structures (<code>immune</code> and <code>infectious</code>) to find all pointers to this object. <b>I'm under the impression that Java will delete all these pointers implicitly if I delete the underlying object.</b> Is this true? Is there a dramatically better way to do this in C++ than what I have here?</ol>

Thanks in advance for any help. 
Java or C++ for my particular agent-based model (ABM)?
===

I unfortunately need to develop an agent-based model. My background is C++; I'm decent but not a professional programmer. My goal is to determine whether, my background aside for the moment, the following kind of algorithm would be faster or dramatically easier to write in C++ or Java.

<ol><li>My agents will be of class <code>Host</code>. Their private member variables include their infection and immune statuses (type <code>int</code>) with respect to different strains. (In C++, I might use an <code>unordered_map</code> or <code>vector</code> to hold this information, depending on the number of strains.) I plan to keep track of all hosts in a vector, <code>vector&lt Host *&gt hosts </code>. </li>
<li>The program will need to know at any time all the particular hosts infected with a particular strain or with immunity to a particular strain. For each strain, I could thus maintain two separate structures, e.g., <code>vector&lt Host *&gt immune </code> and <code>vector&lt Host *&gt infectious </code> (I might make each two-dimensional, indexed by strain and then host).</li>
<li>Hosts can die. It seems like this creates a mess in C++, in that I would have to find the right individual to kill in <code>host</code> and search through the other structures (<code>immune</code> and <code>infectious</code>) to find all pointers to this object. <b>I'm under the impression that Java will delete all these pointers implicitly if I delete the underlying object.</b> Is this true? Is there a dramatically better way to do this in C++ than what I have here?</ol>

Thanks in advance for any help. 