Qt4.7.0文档翻译:QSet类参考,QSet Class Reference
QSet类是一个模板类,它提供一个基于散列表的集合 。
QSet<T>是Qt 的通用 容器类 之一 。它以一个不确定的顺序来储存 值,并且为 值提供非常快的查找功能。 在内部,QSet<T>是以一个 QHash 的形式实现的。
这是一个以 QString 作为 值的QSet 的示例:
QSet<QString> set;
要将一个 值插入到集合中,就使用 insert ():
set.insert("one");
set.insert("three");
set.insert("seven");
另外一个将条目插入到集合中的方法是使用operator<<():
set << "twelve" << "fifteen" << "nineteen";
要测试一个条目是否属于一个集合 ,就使用 contains ():
if (!set.contains("ninety-nine"))
...
如果你想遍历一个QSet 里面所有的 值,你可以使用一个迭代器 。 QSet同时支持 Java风格的迭代器 ( QSetIterator 和 QMutableSetIterator )和 STL风格的迭代器 ( QSet::iterator 和 QSet::const_iterator ) 。像这样使用Java 风格的迭代器来遍历一个QSet< QWidget *> :
QSetIterator<QWidget *> i(set);
while (i.hasNext())
qDebug() << i.next();
这里是相同的代码,不过使用的是一个STL 风格的迭代器 :
QSet<QWidget *>::const_iterator i = set.constBegin();
while (i != set.constEnd()) {
qDebug() << *i;
++i;
}
QSet是不排序的 ,所以不能假设一个迭代器的序列是可预测的 。如果需要按照 键值来排序,那就使用一个 QMap 。
你也可以使用 foreach 来遍历一个QSet :
QSet<QString> set;
...
foreach (QString value, set)
qDebug() << value;
可以使用 remove ()来将条目从集合中删除 。还有一个 clear ()函数 ,可以删除全部条目 。
QSet的 值的数据类型必须是一个 可赋 值的数据类型 。例如 ,你不能将一个 QWidget 作为 值来储存 ;你应当储存一个 QWidget * 。另外 ,那个数据类型必须提供 operator==() ,而且必须存在一个全局的 qHash ()函数 ,它为 键值的数据类型的一个参数返回一个散列值。查看 QHash 文档中的 被 qHash ()支持的数据类型的列表。
在内部 , QSet使用一个散列表来进行查找 。这个散列表自动地增长或缩小 ,以提供快速的查找,同时不浪费内存。如果你已经知道这个QSet 中大概会包含多少个元素了 ,那么你仍然可以通过调用 reserve ()来控制散列表的大小 ,但是这对于取得良好的性能并不是必要的 。你可以调用 capacity ()来查询散列表的大小 。
参见 QSetIterator 、 QMutableSetIterator 、 QHash 和 QMap 。
Your opinionsHxLauncher: Launch Android applications by voice commands