C++ Convert Array To Vector Without Copy

3 min read Jul 01, 2024
C++ Convert Array To Vector Without Copy

Mengonversi Array ke Vector di C++ Tanpa Penyalinan

Dalam pemrograman C++, terkadang kita perlu mengonversi array ke vector. Cara konvensional adalah dengan menyalin elemen-elemen dari array ke vector, yang membutuhkan alokasi memori tambahan dan waktu proses yang lebih lama. Namun, kita dapat melakukan konversi ini tanpa penyalinan, memanfaatkan fitur yang ada di C++11.

Menggunakan std::vector::data()

Salah satu metode yang efisien adalah dengan menggunakan fungsi std::vector::data(), yang mengembalikan pointer ke elemen pertama vector. Dengan pointer ini, kita dapat secara langsung mengakses dan memanipulasi data dalam vector.

#include 
#include 

int main() {
  int arr[] = {1, 2, 3, 4, 5};
  int size = sizeof(arr) / sizeof(arr[0]);

  // Buat vector dengan ukuran yang sama dengan array
  std::vector vec(size);

  // Dapatkan pointer ke elemen pertama vector
  int* ptr = vec.data();

  // Salin elemen dari array ke vector menggunakan pointer
  for (int i = 0; i < size; i++) {
    ptr[i] = arr[i];
  }

  // Cetak elemen vector
  for (int i = 0; i < size; i++) {
    std::cout << vec[i] << " ";
  }
  std::cout << std::endl;

  return 0;
}

Kode ini akan menghasilkan output:

1 2 3 4 5

Menghindari Penyalinan dengan std::vector::resize() dan std::copy()

Metode lain yang memungkinkan adalah dengan menggunakan std::vector::resize() untuk mengatur ukuran vector sesuai dengan array, dan kemudian menggunakan std::copy() untuk menyalin data array ke vector. Metode ini masih melibatkan penyalinan data, tetapi tidak memerlukan alokasi memori baru untuk vector.

#include 
#include 
#include 

int main() {
  int arr[] = {1, 2, 3, 4, 5};
  int size = sizeof(arr) / sizeof(arr[0]);

  // Buat vector kosong
  std::vector vec;

  // Atur ukuran vector sesuai dengan array
  vec.resize(size);

  // Salin data array ke vector
  std::copy(arr, arr + size, vec.begin());

  // Cetak elemen vector
  for (int i = 0; i < size; i++) {
    std::cout << vec[i] << " ";
  }
  std::cout << std::endl;

  return 0;
}

Kode ini menghasilkan output yang sama dengan kode sebelumnya.

Kesimpulan

Dengan menggunakan metode-metode ini, kita dapat mengonversi array ke vector tanpa melakukan penyalinan yang membutuhkan waktu dan memori tambahan. Pilih metode yang paling sesuai dengan kebutuhan dan situasi Anda.

Latest Posts