0

次のような std::map オブジェクトがあります

typedef std::map<int,int> RoutingTable;
RoutingTable rtable;

そして、関数で初期化しました

 for (int i=0; i<getNumNodes(); i++)
 {
   int gateIndex = parentModuleGate->getIndex();
    int address = topo->getNode(i)->getModule()->par("address");
    rtable[address] = gateIndex; 
  }

ここで、別の関数で rtable の値を変更したいと考えています。どうすればこれを達成できますか?

4

1 に答える 1

2

参照渡しrtable:

void some_func(std::map<int, int>& a_rtable)
{
    // Either iterate over each entry in the map and
    // perform some modification to its values.
    for (std::map<int, int>::iterator i = a_rtable.begin();
         i != a_rtable.end();
         i++)
    {
        i->second = ...;
    }

    // Or just directly access the necessary values for
    // modification.
    a_rtable[0] = ...; // Note this would add entry for '0' if one
                       // did not exist so you could use
                       // std::map::find() (or similar) to avoid new
                       // entry creation.

    std::map<int, int>::iterator i = a_rtable.find(5);
    if (i != a_rtable.end())
    {
        i->second = ...;
    }
}
于 2012-04-23T23:31:30.787 に答える