Rumah > pembangunan bahagian belakang > C++ > Mengapa Tiada Pembina dalam std::array untuk Menetapkan Nilai Tertentu kepada Semua Elemen?

Mengapa Tiada Pembina dalam std::array untuk Menetapkan Nilai Tertentu kepada Semua Elemen?

Patricia Arquette
Lepaskan: 2024-10-23 14:50:02
asal
1118 orang telah melayarinya

Why Are There No Constructors in std::array to Assign a Specified Value to All Elements?

Batasan Pembina std::array

Soalan:

Mengapa tidak std ::array menyediakan pembina yang memulakan semua elemen dengan nilai yang ditentukan?

Jawapan:

Dengan reka bentuk, std::array ialah jenis agregat, yang bermaksud ia tidak mempunyai pembina yang ditentukan pengguna. Akibatnya, ia tidak boleh mempunyai pembina seperti:

<code class="cpp">std::array<T, size>::array(const T& value);</code>
Salin selepas log masuk

Alternatif:

Walaupun std::array tidak mempunyai pembina sedemikian, terdapat pilihan alternatif untuk dicapai hasil yang sama:

  1. Pembinaan Lalai dan std::fill: Selepas lalai membina std::array, anda boleh menggunakan fungsi std::fill untuk menetapkan nilai khusus kepada semua elemen:

    <code class="cpp">std::array<int, 10> arr;
    std::fill(arr.begin(), arr.end(), -1);</code>
    Salin selepas log masuk
  2. Permulaan Trivial dan std::uninitialized_fill: Jika jenis yang terkandung dalam std::array boleh dimulakan secara remeh, pembinaan lalai tidak akan memulakan memori kepada sifar tetapi akan meninggalkannya tanpa dimulakan. Dalam kes sedemikian, anda boleh menggunakan std::uninitialized_fill untuk memberikan nilai khusus kepada semua elemen yang tidak dimulakan:

    <code class="cpp">std::array<std::string, 10> arr = {}; // Trivial initialization
    std::uninitialized_fill(arr.begin(), arr.end(), std::string("Example"));</code>
    Salin selepas log masuk

Dengan memahami batasan pembina std::array dan menggunakan alternatif ini , anda boleh memulakan semua elemen std::array dengan nilai yang dikehendaki dengan berkesan.

Atas ialah kandungan terperinci Mengapa Tiada Pembina dalam std::array untuk Menetapkan Nilai Tertentu kepada Semua Elemen?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan