如何在std::set中计算给定元素之前的元素个数
How to count no of elements before a given element in std::set
我想在给定元素的下界之前找到set中不存在的元素,我想到使用std::set::迭代器的指针算术,因为它们的行为像指针,这是我尝试的:
set<int>q;
set<int>::iterator curr;
set<int>::iterator strt;
l = num.size();
q.insert(num[l-1]);
strt = q.begin();
temp = 1;
int x;
for(int i=l-2;i>=0;i--)
{
curr = q.lower_bound(num[i]);
if(curr == q.end())
stats.push_back({temp,0});
else
{
x = curr-strt;//ERROR
stats.push_back({x,temp-x});
}
q.insert(num[i]);
temp++;
}
在给定元素的下界之前,是否有办法找到集合中不存在的元素?
必须从头到尾遍历该集合,以计算元素的数量。这里有一个标准库函数:
x = std::distance(strt, curr);
像curr-strt
这样的算法只在随机访问迭代器中定义,计算可以在常数时间内完成。像distance
这样的函数可以用于更一般的迭代器类型,但如果迭代器不直接支持该操作符,则可能很慢。
使用数据结构增强,可以在对数时间内执行动态顺序统计。
我曾经为此写过一次libstdc++扩展,后来又写了一个python版本。
相关文章:
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 如何计算数组中元素的位数?(不是数组的长度),并计算其数字的总和
- 我必须计算方阵的对角线元素之和的差值
- 如何计算地图中重复元素/值的数量?
- 如何计算字符串中用户输入元素的出现次数?
- 我正在尝试计算链表中当前元素的数量
- 如何计算单个元素在向量<float>中所有元素之和中的百分比
- 如何计算大小为 1000 x 1000 的 2D 数组中 2 个元素之间的步幅?C++
- 如何在 c++ 中计算相同数组元素的数量
- 计算向量中大于数字的元素
- 如何在 c++ 中计算 2 个不同向量的相等元素
- 我写了这个简单的代码,应该计算一系列数组元素的最高数量,但结果很奇怪
- 计算TXT文件中元素的数量
- 从右到左计算当前索引中的数据结构中的元素数,并打印每个元素的计数
- 根据堆栈操作 c++ 计算元素的最大数量
- 对懒惰元素懒洋洋地计算的矢量进行排序
- 计算第一个和最后一个元素绝对差值较小的子序列 <= K
- 如何在多维数组中搜索单个行,然后对某些行中的每个单个元素执行计算
- 动态和静态分配数组元素计算
- 使用多个元素计算排列