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.