你不需要迭代地图——这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()
。附带说明一下,我通常会尽量避免从容器类派生,而是使用委托。