Deklarowanie wektora 2D

W niektórych przypadkach działa tylko poniższy wiersz.Dlaczego?

vector< vector<int>> a(M,N);
To działa w każdym przypadku.
vector< vector<int>> a(M, vector<int> (N));
Co za różnica?
Author: dpr, 2015-02-22

2 answers

std::vector posiada konstruktor wypełnienia, który tworzy wektor n elementów i wypełnia się określoną wartością. a mA typ {[2] } co oznacza, że jest wektorem wektora. Stąd domyślną wartością wypełnienia wektora jest wektor, a nie int. Dlatego druga opcja jest prawidłowa.

std::vector<std::vector<int>> array_2d(rows, std::vector<int>(cols, 0));

Tworzy tablicę rows * cols 2D, gdzie każdy element ma wartość 0. Domyślną wartością jest std::vector<int>(cols, 0), co oznacza, że każdy wiersz ma wektor, który ma cols liczbę elementów, każdy bycie 0.

 50
Author: a_pradhan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-22 21:16:24

Aby zadeklarować wektor 2D musimy najpierw zdefiniować tablicę 1D o wielkości równej liczbie wierszy pożądanego wektora 2D. Niech chcemy utworzyć wektor wierszy k i kolumn m

 "vector<vector<int>> track(k);"

Spowoduje to utworzenie wektora o rozmiarze K. następnie użyj metody resize.

for (int i = 0; i < k; i++) {
    track[i].resize(m);

W ten sposób Można zadeklarować wektor 2D

 1
Author: user10636234,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-11-11 13:11:50