Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mengoptimumkan Permulaan std::vektor 2D dalam C ?

Bagaimanakah Saya Boleh Mengoptimumkan Permulaan std::vektor 2D dalam C ?

DDD
Lepaskan: 2024-11-28 07:38:10
asal
714 orang telah melayarinya

How Can I Optimize the Initialization of a 2D std::vector in C  ?

Permulaan Optimum std::vektor Dua Dimensi

Memulakan std::vektor berbilang dimensi memberikan cabaran tertentu, terutamanya apabila menyasarkan untuk cekap kod. Pertimbangkan contoh yang diberikan:

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);
}
Salin selepas log masuk

Pendekatan ini memerlukan berbilang gelung bersarang dan kelihatan agak membosankan. Penyelesaian yang lebih optimum wujud menggunakan std::vector::vector(count, value) constructor:

std::vector<std::vector<int>> fog(
    ROW_COUNT,
    std::vector<int>(COLUMN_COUNT)); // Defaults to zero initial value
Salin selepas log masuk

Dalam kes ini, pembina mengambil saiz awal dan nilai lalai. Jika nilai lalai yang berbeza dikehendaki, ia boleh ditentukan seperti berikut:

std::vector<std::vector<int>> fog(
    ROW_COUNT,
    std::vector<int>(COLUMN_COUNT, 4));
Salin selepas log masuk

Selain itu, menggunakan pemulaan seragam yang diperkenalkan dalam C 11 menyediakan kaedah ringkas dan boleh dibaca untuk pemulaan vektor:

std::vector<std::vector<int>> fog { { 1, 1, 1 },
                                    { 2, 2, 2 } };
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Permulaan std::vektor 2D dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan