获取受不存在元素限制的QSet子集
Getting subset of QSet limited by non-existent elements
我需要存储QSet[QTime](或类似的)数据。我想要做的是获取range中元素的子集,其中A和B可能不存在,即
vector[int] 5 7 9 11 13Range (6, 11) => 7 9 11
有可能吗?也许有更好的方法?谢谢你的建议
显而易见的解决方案是std::set<QTime>
。并给出了lower_bound
法和upper_bound
法。
当然可以编写代码来做到这一点,但是QSet
是一个"无序"集合,没有特别有效的操作来完成您的要求。您几乎必须枚举它们并测试每个元素以确定它是否符合条件:
QSet<QTime> set;
QTime earliest = QTime::fromString("1.30", "m.s");
QTime latest = QTime::fromString("10.30", "m.s");
...
QSet<QTime> subset;
QSetIterator<QTime> i (set);
while (i.hasNext()) {
QTime t = i.next();
if ((t >= earliest) && (t <= latest)) {
subset.insert(t);
}
}
如果这对你的目的来说不够快,你将不得不使用不同的数据结构和技术。如果你想让你的子集排序,那么你需要将它存储在一个有序的集合中,但我不会真正称之为"子集",而是更像是"子范围"或"切片"。(在计算机科学中,"集合"一词通常意味着元素的顺序对应用程序不感兴趣……但是@MSalters指出std::set
确实有秩序,这对我来说是新闻!)
相关文章:
- 给定一个向量,如何找到该向量的所有子集和的原始索引
- 在子集化后将包含索引号的列表列表映射到标准索引序列
- 显示字符串的集合和子集
- 用于子集字符串的 Rcpp 函数
- 为什么我的子集和方法不正确?
- 计算总和为 x 的所有整数子集(包括负数)
- 在尝试使用递归查找集合子集的总数时,我遇到了分割错误
- 从小于或等于某个 N 的数字列表中最小化或找到 n 个理想的子集和
- 使用 Rcpp 的高效矩阵子集
- 已将 QSet 填充为可选参数
- 返回给定 SEXP 的子集,而无需知道实际的内部数据类型
- 使用递归从子集和中查找最大和
- 如何获得比较两个向量对的子集
- 实现伪多项式DP子集和
- 现代编译器会优化只引用对象子集的局部变量吗
- 类方法子集的惰性评估
- 子集相关位操作
- C++ 特征非连续子集
- 检查一组类型是否是具有组合的子集
- 获取受不存在元素限制的QSet子集