gpt4 book ai didi

c++ - "Iterator not dereferenceable"

转载 作者:行者123 更新时间:2023-11-28 02:37:41 25 4
gpt4 key购买 nike

我喜欢代码让我头疼的时候。除了这个。我只是使用一种常用的算法用随机 double 填充一个 vector 。问题是,在编译之后,它给了我一个“Iterator not dereferenceable”运行时错误。这是我的代码路径:

-首先我创建了一个类的实例。

 Random rm;

-运行这个构造函数

    Random::Random() // Constructor
{
this->cAR();
this->min = 0; // Default: Sets minimum to zero
this->max = RAND_MAX; // Default: Sets maximum to RAND_MAX

fillVect(); // Fills vector
this->numCount = num.begin();
}

-cAR 只是在下面的函数中设置一些值

void Random::cAR()
{
this->num.clear();
this->num.reserve(250);
this->place = 0;
}

-现在是主要问题(我认为),我遍历 vector 并用生成的随机数填充它

void Random::fillVect()
{
srand(time(NULL));
vector<double>::iterator counter;
for (counter = this->num.begin(); counter <= num.end(); counter++)
{
*counter = (((double) rand() / (double) RAND_MAX) * (this->max - this->min)) + this->min;
}

shuffle();
}

- 这应该用随机数填充 vector (顺便说一句,这是一个“ double ”类型的 vector )。然后,我用这个语句调用 vector 中的下一个数字(应该是开头的第 0 个索引)

double r = rm.nextDbl();

-在这个函数中定义

double Random::nextDbl()
{
double temp = *numCount;
return temp;
numCount++;
place++;
}

在我看来,这是一条正确的代码路径。现在,我只写了 2 年的代码,而且在一所真正的大学里只有 1 年的学生,所以我的问题是,为什么它会给我这个运行时错误?我事先感谢任何帮助。

最佳答案

您正在取消引用 end() 迭代器,这是无效的:

 for (counter = this->num.begin(); counter <= num.end(); counter++)

这应该是:

for (counter = this->num.begin(); counter != num.end(); ++counter)

关于c++ - "Iterator not dereferenceable",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26953497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com