0

次のデータを持つマップがあります。

id    prev abundance  thing
1573  -1      0       book
1574  1573    39      beds
1575  1574    41      tray
1576  1575    46      cups

私が書いているコードにはこれがあります:

struct Abund
{
int prev;
int abundance;
string thing;
}

map<int id, Abund*> oldMap;

次のような新しいマップを作成する必要があります。

id2    prev2 prevAbun next2  nextAbun  thing2
1573                   1574   39        book
1574  1573    0        1575   41        beds
1575  1574    39       1576   46        tray
1576  1575    41                        cups

したがって、このために、新しいマップと新しい構造体を作成しました。

struct NewAbund
{
vector<int> prev2;
vector<int> prevAbun;
vector<int> next2;
vector<int> nextAbun;
string thing2;

NewAbund() : 
prev2(0), 
prevAbun(0), 
next2(0), 
nextAbun(0), 
thing2() {}
NewAbund(
vector<int> nodeprev2, 
vector<int> prev_cnt2, 
vector<int> nodenext2, 
vector<int> next_cnt2, 
string node_thing2) :
prev2(nodeprev2), prevAbun(prev_cnt2), next2(nodenext2), nextAbun(next_cnt2), thing2(node_thing2) {}
}

NewAbund(const Abund& old)
{
    thing2 = old.thing;
    prev2.push_back(old.prev);
    prevAbun.push_back(old.abundance);
}

map<int id, NewAbund*> newMap;

今、あるマップから別のマップに要素を移入する方法について完全に迷っています。:(

4

1 に答える 1

1

Abund古い map( ) の要素を新しい map( ) の要素に移入したいと考えていますNewAbund。最初に行う必要があるのは、AbundオブジェクトをNewAbundオブジェクトに変換することです。これは、新しいコンストラクターの追加によって行われますNewAbund(const Abund& old)

struct NewAbund
{
vector<int> prev2;
vector<int> prevAbun;
vector<int> next2;
vector<int> nextAbun;
string thing2;

NewAbund(const Abund& old) {
    //create a NewAbund using the old data
}

};

古いデータを新しいデータに変換する方法を取得したら、次のようにすべてを古いマップから新しいマップに移動します。

typedef map<int id, Abund*>::iterator iter;
iter it = oldMap.begin();
iter end = oldMap.end();
for(; it != end; ++it) {
    newMap[it->first] = new NewAbund(*(it->second));
}
于 2012-10-04T20:20:10.657 に答える