计算特定区间内的点数
Count points within a spesific interval
我有一个 classes 表示伪随机生成器。我想数
每个间隔中的数字数量。 Class区间有public成员函数bool isIninterval(float num)
:
bool Interval::isIninterval(float num)
{
return ((unsigned)(num - a) <= (b - a));
}
这是随机生成器:
class R_G_9
{
public:
R_G_9() {};
float getNextRand();
void printFrequency();
void countFrequency();
private:
R_G_1 r1;
map<Interval, int> intervals;
};
我有一张地图,其中键是 class 区间,值是该区间内的浮点数。我有一个迭代地图的循环。我希望循环在找到一个随机生成的包含浮动的间隔时停止。
这是计算我遇到问题的频率的函数:
void R_G_9::countFrequency()
{
for (int i = 0; i < 100; ++i)
{
intervals.insert(make_pair(Interval(i, i + 10), 0));
}
const long maxRands = 1000;
for (int i = 0; i < maxRands; ++i)
{
float r = getNextRand();
typedef map<Interval, int>::const_iterator Iter ;
Iter p = intervals.begin();
for (; p != intervals.end(); ++p)
if (p->first->isIninterval(r)) break; // is not OK
// do something
}
}
我不知道如何才能检查间隔是否浮动。我试过了。
if (p->first->isIninterval(r)) break;
和
if (p->first.isIninterval(r)) break;
但是它说我不能这样做(在它下面用红色波浪线划线)。也许有人知道如何正确地做到这一点,我将不胜感激。
尝试将 isInInterval
标记为 const
:
bool Interval::isIninterval(float num) const
{
return ((unsigned)(num - a) <= (b - a));
}
此修复后,以下代码应该可以工作:
if (p->first.isIninterval(r)) break;
您附加的编译器消息指出您使用的 Interval
(p->first
) 是一个常量变量(您不能更改映射中值的键)。将 const 添加到方法声明的末尾,您可以允许此方法执行 const 值。
我有一个 classes 表示伪随机生成器。我想数
每个间隔中的数字数量。 Class区间有public成员函数bool isIninterval(float num)
:
bool Interval::isIninterval(float num)
{
return ((unsigned)(num - a) <= (b - a));
}
这是随机生成器:
class R_G_9
{
public:
R_G_9() {};
float getNextRand();
void printFrequency();
void countFrequency();
private:
R_G_1 r1;
map<Interval, int> intervals;
};
我有一张地图,其中键是 class 区间,值是该区间内的浮点数。我有一个迭代地图的循环。我希望循环在找到一个随机生成的包含浮动的间隔时停止。 这是计算我遇到问题的频率的函数:
void R_G_9::countFrequency()
{
for (int i = 0; i < 100; ++i)
{
intervals.insert(make_pair(Interval(i, i + 10), 0));
}
const long maxRands = 1000;
for (int i = 0; i < maxRands; ++i)
{
float r = getNextRand();
typedef map<Interval, int>::const_iterator Iter ;
Iter p = intervals.begin();
for (; p != intervals.end(); ++p)
if (p->first->isIninterval(r)) break; // is not OK
// do something
}
}
我不知道如何才能检查间隔是否浮动。我试过了。
if (p->first->isIninterval(r)) break;
和
if (p->first.isIninterval(r)) break;
但是它说我不能这样做(在它下面用红色波浪线划线)。也许有人知道如何正确地做到这一点,我将不胜感激。
尝试将 isInInterval
标记为 const
:
bool Interval::isIninterval(float num) const
{
return ((unsigned)(num - a) <= (b - a));
}
此修复后,以下代码应该可以工作:
if (p->first.isIninterval(r)) break;
您附加的编译器消息指出您使用的 Interval
(p->first
) 是一个常量变量(您不能更改映射中值的键)。将 const 添加到方法声明的末尾,您可以允许此方法执行 const 值。