Tablica sama(?) się czyści

0

Cześć,
na sam początek chciałem się przywitać, to mój pierwszy post na tym forum :D

Mam następujący problem.

string ****comb_table_rd;
		  comb_table_rd=new string ***[comb_table_length];
		  for (int i=0;i<comb_table_length;i++)
		  {
				  comb_table_rd[i]=new string **[l1];
				  for (int j=0;j<l1;j++)
				  {
						  comb_table_rd[i][j]=new string *[l2];
						  for (int k=0; k < l2; k++) {
							  comb_table_rd[i][j][k]=new string[2];
						  }
				  }
		  }

	string tmp, tmp2;
	int licznik = 1;
	string * field_idi = new string [l2];
	for(int b=0; b<comb_table_length; b++){
		for(int i=0; i<l1; i++)
		{

			field_idi = field_ids[i];
			for(int j=0; j<l2; j++)
			{
				string field_id = field_idi[j];
				tmp = comb_table[b];
				tmp2 = d3d2;
				for(int k=0; k<n; k++)
				{
					int ppos = strpos_char(comb_table[b], d2[k], 0);
					char d3char = (char)(((int)'0')+d3);

					if(ppos != -1 && field_id[k] == d3char)
					{
						tmp[ppos] = toupper(tmp[ppos]);
						tmp2[ppos]=d3char;
					}
				}
				string array[2] = {tmp, tmp2};
				comb_table_rd[b][i][j]=array;
				if (comb_table_rd[b][i][j][0]!="") {
					Form1->StringGrid3->Cells[0][0]="b";
					Form1->StringGrid3->Cells[0][licznik]=b;
					Form1->StringGrid3->Cells[1][0]="i";
					Form1->StringGrid3->Cells[1][licznik]=i;
					Form1->StringGrid3->Cells[2][0]="j";
					Form1->StringGrid3->Cells[2][licznik]=j;
					Form1->StringGrid3->Cells[3][0]="comb_table_rd[b][i][j][0]";
					Form1->StringGrid3->Cells[3][licznik]=comb_table_rd[b][i][j][0].c_str();

					licznik++;
				}
			}
		}
	}
	licznik = 0;
	for (int b = 0; b < comb_table_length; b++) {
		for (int i = 0; i < l1; i++) {
			for (int j = 0; j < l2; j++) {

					Form1->StringGrid2->Cells[0][0]="b";
					Form1->StringGrid2->Cells[0][licznik]=b;
					Form1->StringGrid2->Cells[1][0]="i";
					Form1->StringGrid2->Cells[1][licznik]=i;
					Form1->StringGrid2->Cells[2][0]="j";
					Form1->StringGrid2->Cells[2][licznik]=j;
					Form1->StringGrid2->Cells[3][0]="comb_table_rd[b][i][j][0]";
					if (comb_table_rd[b][i][j][0]!="") {
						Form1->StringGrid2->Cells[3][licznik]=comb_table_rd[b][i][j][0].c_str();
					} else {
						Form1->StringGrid2->Cells[3][licznik]="pusto";
					}


					licznik++;

			}

		}
	} 

Problem polega na tym, że w pierwszej pętli, w trakcie uzupełniania tablicy, wszystko działa, a tablica poprawnie się wyświetla. Natomiast kiedy program wyjdzie z tej pętli, i próbuję ponownie wyświetlić zawartość tablicy, okazuje się, że wszystkie komórki są puste. Nie mam pojęcia, dlaczego tak się dzieje. Może ktoś z Was jest w stanie pomóc? W poście załączam screen z działania programu, na którym widać tablice wyświetlona w trakcie działania pętli i po jej zakończeniu.
c55f964d86.png

5
string ****comb_table_rd

OMG!

Przepisz to wszystko na std::vector albo std::array albo coś, bo poczwórnego wskaźnika po prostu nie ogarniesz.
I nie ogarniasz.

1

Wielkie dzięki, przepisanie na

std::vector

pomogło. Na moją obronę dodam, że dopiero się uczę C++, więc opierałem się na tym co wyczytałem w tutorialach, a tam o vectorach za dużo nie pisali ;) Jeszcze raz dzięki, temat do zamknięcia :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1