안녕하세요. 세분화 오류로 인해 코드 검토가 필요합니다. 내 2D 벡터에 메모리가 할당되지 않았기 때문에 그 것이지만 어떻게해야합니까?C++, 2D 벡터 분할 오류
std::vector <std::vector <std::string>> pdf_report::random_data (int num_entries, int report_type)
{
std::vector <std::vector <std::string>> printer_control;
int card_num_max = 999899, card_num_min = 100000; // card number
int vol_ent_max = 1000, vol_ent_min = 10; // volume entered
int vol_disp_max = 7, vol_disp_min = 0; // volume dispensed
int cn_type_max = 10, cn_type_min = 1; // card type
int charge_amt_max = 400, charge_amt_min = 2;
int vol_bal_max = 6000, vol_bal_min = 0;
int auth_num_max = 9999, auth_num_min = 1000;
srand (time (NULL)); // seed rand() with new values
switch (report_type)
{
case 1: // Report 1: Card Number, Volume Entered, Volume Dispensed
{
// fill a string array with random values
for (int k = 0; k < num_entries; k++)
{
int randNum = 0;
int randNum1 = 0;
int randNum2 = 0;
int randNum3 = 0;
// fill column 0 for Card Number
randNum = rand() % (card_num_max - card_num_min) + card_num_min; // generate random numbers inside range
printer_control [k][0] = int_to_str (randNum); // set string array element equal to converted int
// fill column 1 for Volume Entered
randNum1 = rand() % (vol_ent_max - vol_ent_min) + vol_ent_min; // generate random numbers inside range
printer_control [k][1] = int_to_str (randNum1); // set string array element equal to converted int
// fill column 2 for Volume Dispensed
randNum2 = rand() % (vol_disp_max - vol_disp_min); // generate random numbers inside range
randNum3 = randNum1 - randNum2; // volume dispensed could be lower than the number entered, but not higher
printer_control [k][2] = int_to_str (randNum3); // set string array element equal to converted int
}
break;
}
}
return printer_control;
}
나는 더 많은 경우가 있지만 일하기를 원한다면 다른 사람들에게 복사해야합니다. 도와 줘서 고마워.
그래서, 당신이 알고 당신의 코드 SEG-오류, 메모리를 할당하지 않은이 작업을 수행하는 방법을 알고하지 않기 때문에 :
는 이렇게, 당신의vector<vector<string> >
를 초기화합니다. 그렇다면 메모리를 할당하는 방법을 묻지 않는 이유는 무엇입니까? :/"내 2D 벡터"슬로건 대신 변수 이름을 제공하면 질문을 더 쉽게 읽을 수 있습니다. – doc필자가 필요한 것은 printer_control.resize (3)입니다. 3 열이 있기 때문에 – Adam
printer_control의 크기는 얼마입니까? num_entries x num_entries 또는 num_entries x 3? – Guilherme