#include <iostream>
#include <random>
#include <fstream>
#include <time.h>
using namespace std;
bool generateRandomValue()
{
static std::default_random_engine e{};
static std::uniform_int_distribution<int> d{ 0, 100 };
bool headsTails = (d(e) > 50) ? true : false;
return headsTails;
}
int main()
{
clock_t tStart = clock();
ofstream outputFile("output.txt");
int totalHeads = 0;
int totalTails = 0;
vector<int> headList(100,0);
vector<int> tailList(100,0);
for (int out = 0; out <= 100; out++)
{
char result = '\0';
int heads = 0, tails = 0;
for (int i = 0; i < 100000; i++)
{
result = (generateRandomValue()) ? 'H' : 'T';
if (result == 'H')
{
heads++;
}
else
{
tails++;
}
}
outputFile << "Trial " << out << ": Heads: " << heads << " Tails: " << tails << endl << endl;
headList.push_back(heads);
tailList.push_back(tails);
}
for (vector<int>::iterator i = headList.begin(); i < headList.end(); i++)
{
totalHeads += headList[*i];
totalTails += tailList[*i];
}
cout << "It took: " << (double)(clock() - tStart)/CLOCKS_PER_SEC << " seconds to calculate and execute this program.\n";
outputFile << "Total number of heads: " << totalHeads << " Total number of tails: " << totalTails << endl;
return 0;
}
Выше приведен код, в который я вступил, только для того, чтобы опробовать векторы (никогда не использовал их в классе). Код компилируется в VS2015, но программа выходит из строя со следующей ошибкой: «Векторный индекс вне диапазона».Векторный индекс вне диапазона на итераторе
Я предполагаю, что это говорит мне, что в какой-то момент моей программы вектор пытается быть адресован в месте за пределами его границ. Я не смог определить, набрасывается ли ошибка на мои векторы хранения или вектор-итератор в последнем цикле for, а отладка не работает, потому что программа выходит из строя, прежде чем она сможет начать отладку (что странно, t - ошибка времени компиляции).
'vector headList (100,0);' создаст вектор со 100 входами. '.push_back' добавит новые записи (поэтому к концу внешнего цикла' for' векторы будут иметь 201 элемент). Второй цикл 'for' должен быть просто' for (std :: size_t i = 0; i
Cornstalks
@RSahu: Он сделал ... – Cornstalks
@Cornstalks, его можно обрезать дальше, но теперь это не проблема. Проблема уже определена Славой. –