QHashから指定した値を持つキーを取得
解説
key()はQHashから指定した値に一致するキーを1つ取得します.
keys()はQHashから指定した値に一致するキーを全て取得します.
uniqueKeys()はQHashから指定した値に一致するキーを全て取得します.ただし,キーが重複している場合は返値のQListから取り除かれます.
定義は以下の通りです.
const Key QHash::key ( const T & value ) const
const Key QHash::key ( const T & value, const Key & defaultKey ) const
QList<Key> QHash::keys () const
QList<Key> QHash::keys ( const T & value ) const
QList<Key> QHash::uniqueKeys () const
key(),keys()の引数valueには検索対象のキーを指定します.
key()の引数defaultKeyには,引数keyに一致する要素が見つからなかった場合に返される値を指定します.指定しない場合は型Keyのディフォルトコンストラクタの値が返されます.
keys()で引数を指定しない場合は全てのキーが返されます.
uniqueKeys()はQHashの全てのキーを返します.ただし,キー場重複している場合は,返値のQListから取り除かれます.
使用例
#include <QTextCodec>
#include <QTextStream>
#include <QHash>
#include <QList>
int main(int argc, char *argv[]) {
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
QTextStream out(stdout);
QHash<QString, int> hash;
hash.insert("a", 0); // hash = {<a, 0>}
hash.insert("b", 0); // hash = {<a, 0>, <b, 0>}
hash.insertMulti ("b", 1); // hash = {<a, 0>, <b, 0>, <b, 1>}
hash.insertMulti ("b", 2); // hash = {<a, 0>, <b, 0>, <b, 1>, <b, 2>}
out << hash.key(0) << "\n";
out << hash.key(3) << "\n"; // ディフォルトコンストラクタの呼び出し,QStringのディフォルトコンストラクタは"".
out << hash.key(3, "default") << "\n"; // キーが見つからない場合"default"を返す.
out << "===\n";
QList<QString> lst1 = hash.keys(0); // lst1 = (a, b)
foreach (QString str, lst1) {
out << str << ",";
}
out << "\n";
QList<QString> lst2 = hash.keys(); // lst2 = (a, b, b, b)
foreach (QString str, lst2) {
out << str << ",";
}
out << "\n";
QList<QString> lst3 = hash.uniqueKeys();// lst3 = (a, b)
foreach (QString str, lst3) {
out << str << ",";
}
out << "\n";
return 0;
}
出力
a
default
===
a,b,
a,b,b,b,
a,b,
最終更新:2011年09月23日 19:55