Memulakan std::vektor Dua Dimensi Dengan Cekap
Pertimbangkan coretan kod berikut:
std::vector< std::vector<int> > fog; for(int i=0; i<A_NUMBER; i++) { std::vector <int> fogRow; for(int j=0; j<OTHER_NUMBER; j++) { fogRow.push_back(0); } fog.push_back(fogRow); }
Kaedah ini memulakan std::vektor dua dimensi kelihatan tidak cekap. Pendekatan alternatif yang memanfaatkan pembina std::vector::vector(count, value) tersedia:
std::vector<std::vector<int>> fog( ROW_COUNT, std::vector<int>(COLUMN_COUNT)); // Defaults to zero initial value
Jika nilai lalai selain sifar dikehendaki, nyatakan ia seperti yang ditunjukkan di bawah:
std::vector<std::vector<int>> fog( ROW_COUNT, std::vector<int>(COLUMN_COUNT, 4));
Selain itu, pemulaan seragam yang diperkenalkan dalam C 11 membolehkan pemulaan ringkas menggunakan {}:
std::vector<std::vector<int>> fog { { 1, 1, 1 }, { 2, 2, 2 } };
Atas ialah kandungan terperinci Apakah Cara Paling Cekap untuk Memulakan 2D std::vector dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!