2017-08-31 16 views
0

マップを使用してテキストファイルから音楽ライブラリを保持して整理するプログラムを作成しています。アーティストマップには、ソングマップを保持するアルバムマップがあります。私が抱えている問題は、各アーティストのすべてのアルバムが、そのアーティストのアルバムだけでなく、各アーティストの下に挿入されていることです。私は、アーティストが新しいアーティストかどうかを判断し、それがアーティストマップにあればそれを挿入するこの関数に絞り込んだ。アルバムが整理されると、アルバムと曲にも同じです。マップ内の地図のC++ STL地図が正しく挿入されない

はここにここに私のクラス情報

class Song { 
public: 

    string title; 
    int time; 
    int track; 
}; 

class Album { 
public: 
    map <int, Song *> songs; 
    string name; 
    int time; 
}; 

class Artist { 
public: 
    map <string, Album *> albums; 
    string name; 
    int time; 
    int nsongs; 
}; 

である私は、問題があると考えている機能である:

map <string, Artist*> newArtist(Artist* a, Album* al, Song* s, string artist, string album, int track, map <string, Artist*> lib){ 
    if (lib.find(artist) == lib.end()){ 
     cout << "New Artist: " << artist << endl; 
     a->name = artist; 
     lib[artist] = a; 
    } else if (lib.find(artist) != lib.end()){ 
     cout << "Old Artist: " << artist << endl; 
    } 
    if (lib.find(artist)->second->albums.find(album) == lib.find(artist)->second->albums.end()){ 
     cout << "New Album: " << album << endl; 
     al->name = album; 
     lib.find(artist)->second->albums[album] = al; 
    } else if (lib.find(artist)->second->albums.find(album) != lib.find(artist)->second->albums.end()){ 
     cout << "Old Album: " << album << endl; 
    } 
    return lib; 
} 

これは、プリントアウトしものです。あなたが見ることができるようにすべての単一のアルバムはすべてのアーティストの下にあります。

King Crimson 
     A Russian Piano Recital 
     Intergalactic Boogie Express 
     Jazz Piano III (A Smithsonian Collection) 
     Josef Hofmann & Ignace Jan Paderewski Play Liszt 
     Larks' Tongues In Aspic 
     Paderewski Plays Concert No. 1 
     Three of a Perfect Pair 
Larkins, Ellis 
     A Russian Piano Recital 
     Intergalactic Boogie Express 
     Jazz Piano III (A Smithsonian Collection) 
     Josef Hofmann & Ignace Jan Paderewski Play Liszt 
     Larks' Tongues In Aspic 
     Paderewski Plays Concert No. 1 
     Three of a Perfect Pair 
League of Crafty Guitarists 
     A Russian Piano Recital 
     Intergalactic Boogie Express 
     Jazz Piano III (A Smithsonian Collection) 
     Josef Hofmann & Ignace Jan Paderewski Play Liszt 
     Larks' Tongues In Aspic 
     Paderewski Plays Concert No. 1 
     Three of a Perfect Pair 
Lewin, Michael 
     A Russian Piano Recital 
     Intergalactic Boogie Express 
     Jazz Piano III (A Smithsonian Collection) 
     Josef Hofmann & Ignace Jan Paderewski Play Liszt 
     Larks' Tongues In Aspic 
     Paderewski Plays Concert No. 1 
     Three of a Perfect Pair 
Paderewski, Ignace 
     A Russian Piano Recital 
     Intergalactic Boogie Express 
     Jazz Piano III (A Smithsonian Collection) 
     Josef Hofmann & Ignace Jan Paderewski Play Liszt 
     Larks' Tongues In Aspic 
     Paderewski Plays Concert No. 1 
     Three of a Perfect Pair 

私がここで間違っていることに関するアイデア。

+0

私たちにエラーを表示しますか? –

+0

私は出力を追加しました。 –

+0

私はそれが関数の後にオブジェクトの削除を削除することによって動作するようになった。 Idkの場合は、メモリリークがあることを意味します。 –

答えて

0

これを修正するために、私はメインプログラムループ内でオブジェクトを作成する必要があり、削除したステートメントを削除する必要がありました。

関連する問題