Wort.Std :: Set. Benutzerdefinierte Reihe von Sets
Ich habe eine Struktur, ein einzelnes Feld enthalten, die ich setzen würde gerne für den Vergleich und die Gleichwertigkeit und andere Bereiche als Metadaten zu verwenden:
struct read_tag{
unsigned int read_id; // want std::set to use this
int offset; // metadata
bool orientation; // metadata
};
Ich habe einen Funktor den Job zu erledigen:
struct read_tag_compare {
bool operator() (const read_tag &a, const read_tag &b) const {
return a.read_id > b.read_id
}
};
und decl. der erforderliche Satz als
std::set<read_tag, read_tag_compare> block;
Alles bis jetzt kompiliert. Das Problem ist unten:
Wie mache ich einen Satz, der std::set<read_tag, read_tag_compare>
enthält. Ich möchte etwas wie das:
std::set< std::set<read_tag, read_tag_compare> > blocks;
blocks.insert(a_block); // comp error
Aber das gibt mir einen sehr großen und schwer zu entziffern Fehler.
Ich dachte, es würde rekursiv überprüfen, wie die inneren Mengen verglichen werden und diese auf die äußeren Mengen erweitern. Alles, was man tun musste, ist den Komparator für den innersten Satz zu definieren.
Zum Beispiel
std::set<std:set<unsigned int>> set_o_sets;
funktioniert gut, ohne mich wie zu definieren, die vergleichen std::set<unsigned int>
Jede Hilfe ist mucho geschätzt: D
Nein, weil ich nur ein 'std :: set' in 'Blöcken' durch die Äquivalenz definiert haben möchte. –
Es ist mir egal, wenn die Metadaten aus den beiden Sets nicht gleichwertig sind. Because, wenn zwei Sätze alle die gleichen 'read_tag 'in Bezug auf' read_tag enthalten.read_id' Die Metadaten sind nicht in einem numerischen Sinn äquivalent, aber die gleiche Information kann später abgeleitet werden. So kann ich entweder einen der beiden Sätze nehmen, aber ich will nicht beide –