-3
一連の乱数を生成し、それらをベクトルにプッシュバックします。次に、リンクされたリストに順番に挿入してリストを印刷したいと思います。しかし、それは常にエラーを投げます。 リンクされたリストに整理番号を挿入する
#include"std_lib_facilities.h"
#include <chrono>
#define N 100
int random_numbers()
{
random_device rd; //Will be used to obtain a seed for the random number engine
mt19937 gen(rd()); //Standard mersenne_twister_engine seeded with rd()
uniform_int_distribution<> dis(0, N);
int a = 0;
a = dis(gen);
return a;
}
vector<int> randoms;
void get_random_numbers()
{
for (int i = 0; i < N; i++)
{
randoms.push_back(random_numbers());
}
}
void insert_in_lists()
{
list<int> l ;
for (int i = 0; i < N; i++)
{
list<int>::iterator it = l.begin();
if (i = 0)
{
l.insert(it, randoms[i]);
}
else
{
for (list<int>::iterator p = l.begin(); p != l.end(); p++)
{
if (randoms[i]<= *p)
{
it = p;
//break;
}
}
l.insert(it, randoms[i]);
}
}
for (list<int>::iterator p = l.begin(); p != l.end(); p++)
{
cout << *p << endl;
}
}
int main()
{
get_random_numbers()
insert_in_lists();
keep_window_open();
return 0;
}
Iのようなソートされた数の一連の取得したい: 1 2 2 2 3 4 5 6 6 6 6 6 7 ....... ERROR:Problem06で0x74F608B2で未処理の例外を.exe:Microsoft C++例外:Range_error(メモリ位置0x00EFF884)。
ここで 'get_random_numbers'を呼び出しますか?あなたは数字を入れる前に 'randoms'を読んでいるように見えますが、これは**未定義の動作です**。 – Beta
私はそれを編集しましたが、それでも動作しません。 –
'if(i = 0)' =は代入ではなく比較です。それを 'if(i == 0)'に変更してください。 – drescherjm