マップを反復する必要はありません。これはcontains()
既に行っていることです。単に使用する
bool TextbookMap::foundTextBook(const QString& isbn) const {
return contains(isbn);
}
TextbookMap
(私はあなたがから派生したと仮定しますQMap
)
以下のコードが出力されます
false
true
class Textbook {
};
class TextbookMap : public QMap<QString, Textbook*> {
public:
bool foundTextBook(const QString& isbn) const;
};
bool TextbookMap::foundTextBook(const QString& isbn) const {
return contains(isbn);
}
int main(int argc, char ** argv) {
TextbookMap map;
map.insert("1234", new Textbook());
map.insert("5678", new Textbook());
qDebug() << map.foundTextBook("01234");
qDebug() << map.foundTextBook("1234");
return 0;
}
この例では、別のメソッドを実装する必要さえありませんmap.contains()
。直接使用することもできます。contains()
ただし、このようにメソッドをカプセル化することが理にかなっているのかどうかは、具体的な要件によって異なります。余談ですが、私は通常、コンテナー クラスからの派生を避け、代わりに委任を使用するようにしています。