當代碼讓我頭疼的時候,我就愛上它了。除此之外。我只是用一個經常使用的算法,用隨機雙打填充矢量。問題是,編譯之後,它給了我一個「迭代器而不可引用」的運行時錯誤。這裏是我的代碼路徑:「迭代器不可解引用」
- 首先我創建一個類的實例。
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;
}
- 現在的主要問題(我認爲)一些值,我重複了直通矢量並用生成的隨機數填充它
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();
}
- 應該用隨機數填充向量(這是一個「雙」型向量,btw)。然後,我打電話向量中的下一個號碼(這應該是在開始的0指數)這個說法
double r = rm.nextDbl();
首位,而其在該功能
double Random::nextDbl()
{
double temp = *numCount;
return temp;
numCount++;
place++;
}
定義。在我的頭上,這是一個正確的代碼路徑。現在,我只寫了兩年,在一所大學裏只有一年的學生,所以我的問題是,爲什麼它會給我這個運行時錯誤?我很感激任何幫助。
但爲什麼++計數器?我不應該爲第一個索引分配一個隨機數,然後增加索引位置?爲什麼櫃檯必須事先增加? –
優先於增量後的預增量。在SO和你最喜歡的C++書籍中,可能有很多線索是爲什麼會出現這種情況。 – PaulMcKenzie
還沒有骰子。我已經替換了計數器和條件,並且還使用了調整大小而不是保留,所以我運氣不好。也許生病只是重做整個事情,看看結果如何。 –