在特定间隔内计数点数

Count points within a spesific interval

本文关键字:      更新时间:2023-10-16

我有一个代表伪随机生成器的类。我想计数

每个区间内的数字数量。类Interval具有公共成员函数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;
};

我有一个映射,其中键是一个类间隔,值是在这个间隔内的浮点数。我有一个循环迭代一个映射。我想要一个循环在它到达一个包含浮点数的区间时停止,这是随机生成的。这里是计算频率的函数,我有问题:

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
    }
}

我不知道该怎么做,以使它有可能检查如果浮点在interval。我试过了。

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,可以允许const值执行该方法。

相关文章:
  • 没有找到相关文章