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

Patricia Arquette
Lepaskan: 2024-10-23 14:50:02
asal
992 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!

sumber: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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!