私は、クラスT、int、および比較クラスであるsortByを含むマップに含まれる順序付けられていないマップから要素をマップしようとしています。順序付けられていないマップからカスタムクラスをキーとしてマップを作成します。しかし、constのために使用できない要素
しかし、私はマップ内のどの要素でも何も実行できません。それらはすべてconstですから。私はそれらをconstにしない方法や、なぜ彼らが最初にconstだったのか分かりません。
unordered_map < int,LibrarySong> Library;
map < LibrarySong,int, LibrarySong:: sortbyPlay> sortedLibrary;
for(unordered_map<int,LibrarySong>:: iterator it = Library.begin(); it != Library.end(); ++it){
sortedLibrary.insert(pair <LibrarySong,int> (it->second, it->first));
}
for(map < LibrarySong,int>::iterator it=sortedLibrary.begin(); it != sortedLibrary.end(); ++it){
cout << it->first.print() << endl; //Cant do anything because it is const
};
LibrarySongsヘッダーが構造
struct sortbyPlay {
bool operator() (const LibrarySong &lhs ,const LibrarySong &rhs) const{
return lhs.numPlay < rhs.numPlay;
}
};
を持っている私は、関数でのconstを削除しようとしたが、それはどちらか動作しませんか?
おそらくもっと良い方法がありますが、わかりません。私はベクトルを考えていて、sort()を使っていましたが、両方の値が必要でした(恐らくペアを使うことができますか?)しかし、constの問題が依然として続くかどうかはわかりません。
私はあなたが物事を不必要に複雑にしているように見えます。あなたのunordered_mapは、intとしてキーを使用し、Librarysongインスタンスを値として使用します。あなたのマップはその周辺を切り換え、特別なコンパレータを使用します。 numPlayはintですか?もしそうなら、それをキーのままにして、あなたが望むソートを得るのではなく、LibrarySongはもはやconstではありません。 – tinstaafl