Non puoi usare l'operatore[] su dei puntatori. Devi usare at().
Per cui avrai:
map0->at(i)->subchannelID
come modo di accesso.
Più in generale, rileggendo meglio il thread, ho notato che la tua funzione riceve un parametro di tipo vector<alloc_map_element*>, per cui in realtà devi salvare solo uno dei vector che ti servono (magari come dato membro).
Aggiungere
prop_alloc_map alla tua m_maps la vedo solo come una inutile complicazione se non intendi salvarla per usarla in seguito.
Nel primo caso m_maps sarà un semplice vector<alloc_map_element*> che memorizzi in un'altra funzione. In quella in esame ti basta confrontare
prop_alloc_map con
m_maps senza complicarti troppo la vita.
In questo caso m_maps la puoi definire:
std::vector<alloc_map_element*> m_maps;
Se invece devi salvare
prop_alloc_map in una struttura dati puoi salvarla usando una struttura dati standard (std::list<>, std::vector<>, std::deque<>), fermo restando che il confronto lo puoi sempre fare usando poi la
prop_alloc_map senza bisogno di estrarla.
In questo caso m_maps la puoi definire:
std::xxxx<std::vector<alloc_map_element*>> m_maps;
dove al posto di xxxx puoi mettere list,vector,deque.
Se invece hai la garanzia di avere sempre e solo due vector<alloc_map_element*> e intendi sempre salvare
prop_alloc_map, puoi pensare anche a una std::pair<>
In tal caso m_maps sarà:
std::pair<std::vector<alloc_map_element*>,std::vector<alloc_map_element*>> m_maps.
il primo vector sarà in: m_maps.first, il secondo in m_maps.second.
Soluzioni ce ne sono diverse, ma tutto dipende da cosa devi fare davvero.