0Pricing
C++ Academy · Pelajaran

Vector vs std::array vs Array C

Bandingkan ketiga kontainer berurutan dan pilih berdasarkan ukuran, kepemilikan, serta kinerja

Vector vs std::array vs Array C adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.

Tiga Kontainer Berurutan

C++ memiliki tiga cara untuk menyimpan urutan yang berdampingan:

  • std::vector — ukuran dinamis, penyimpanan di memori dinamis
  • std::array — ukuran tetap saat kompilasi, penyimpanan di tumpukan
  • Larik bergaya C — ukuran tetap, tingkat rendah

Larik Bergaya C

Bentuk yang paling lama. Ukuran merupakan bagian dari tipe. Berubah menjadi pointer saat diteruskan ke fungsi—ukurannya pun hilang.

int a[5] = {1, 2, 3, 4, 5};
std::cout << a[2];   // 3

Masalah pada Larik Bergaya C

Larik ini melupakan ukurannya dalam sebagian besar konteks, tidak memeriksa batas, dan mudah disalahgunakan. Sebaiknya gunakan std::array atau std::vector dalam kode baru.

std::array (C++11)

Pembungkus tipis untuk larik berukuran tetap. Kinerjanya sama seperti larik C, tetapi memiliki tipe yang sebenarnya dan fungsi anggota yang semestinya.

#include <array>
std::array<int, 5> a = {1, 2, 3, 4, 5};
std::cout << a.size();   // 5
std::cout << a.at(2);    // bounds-checked

std::array Tetap Berada di Tumpukan

Berbeda dari vektor, std::array menyimpan elemennya secara langsung. Tidak ada alokasi memori dinamis. Ukurannya merupakan parameter templat.

std::vector untuk Ukuran Dinamis

Gunakan std::vector ketika Anda tidak mengetahui ukurannya saat kompilasi atau ketika ukurannya akan berubah saat program berjalan.

Perbandingan Kinerja

Untuk ukuran tetap, ketiganya memiliki kinerja yang serupa. std::vector menambahkan sedikit beban untuk pencatatan pointer dan ukuran, serta satu tingkat pengacuan tidak langsung.

Meneruskan ke Fungsi

Teruskan vector atau std::array dengan referensi const untuk menghindari penyalinan. Larik C sebaiknya diganti dengan std::span (C++20) saat Anda hanya meminjamnya.

void process(const std::vector<int>& v);
void process(const std::array<int, 5>& a);

#include <span>
void process(std::span<const int> data);  // accepts both

std::span (C++20)

Tampilan tanpa kepemilikan atas urutan yang berdampingan. Seperti pasangan pointer dan panjang. Menerima vector, std::arrays, dan larik C secara seragam.

Kapan Memilih yang Mana

Pohon keputusan:

  • Memerlukan ukuran dinamis → std::vector
  • Ukuran tetap, tanpa alokasi → std::array
  • Meminjam tanpa kepemilikan → std::span
  • Berinteraksi dengan kode C → larik C

Konversi di Antara Ketiganya

Anda dapat menyalin elemen di antara berbagai tipe menggunakan rentang atau algoritme.

std::array<int, 3> a = {1, 2, 3};
std::vector<int> v(a.begin(), a.end());
int c[3];
std::copy(a.begin(), a.end(), c);

Pemeriksaan Singkat

Kontainer mana yang menyimpan elemen di tumpukan dan memiliki ukuran yang diketahui saat kompilasi?

Rangkuman

Utamakan std::vector untuk ukuran dinamis dan std::array untuk ukuran tetap. Larik bergaya C jarang menjadi pilihan terbaik dalam kode modern. Gunakan std::span untuk meminjam urutan tanpa memilikinya.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Vector vs std::array vs Array C” gratis?

Ya — teks lengkap “Vector vs std::array vs Array C” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Vector vs std::array vs Array C”?

Bandingkan ketiga kontainer berurutan dan pilih berdasarkan ukuran, kepemilikan, serta kinerja Kamu berlatih C++ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C++ Academy?

Tidak diperlukan pengalaman sebelumnya. C++ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Vector vs std::array vs Array C” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C++ Academy ini?

Ya. Setiap pelajaran C++ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Dasar std::vector: push_back, size, capacity
  2. Melakukan Iterasi pada Vektor: indeks, range-for, iterator
  3. Memodifikasi Vektor: insert, erase, clear
  4. Vector vs std::array vs Array C
← Kembali ke C++ Academy