Rumah > pembangunan bahagian belakang > C++ > Mengapa Saya Tidak Boleh Menggunakan Rujukan sebagai Elemen dalam Vektor Standard?

Mengapa Saya Tidak Boleh Menggunakan Rujukan sebagai Elemen dalam Vektor Standard?

DDD
Lepaskan: 2024-12-26 16:13:13
asal
882 orang telah melayarinya

Why Can't I Use References as Elements in a Standard Vector?

Mengapa Vektor Saya Tidak Menerima Rujukan?

Masalah: Vektor berfungsi, tetapi Vector menyebabkan ralat pengkompil.

Penjelasan:

Vektor dan bekas lain memerlukan jenis komponennya boleh ditugaskan. Rujukan ialah jenis yang tidak boleh diserahkan kerana ia memegang rujukan berterusan kepada lokasi ingatan tertentu. Sebaik sahaja rujukan dimulakan, ia tidak boleh menghala ke objek lain.

Pendekatan Yang Mungkin:

  • Sebaliknya Gunakan Penunjuk: Ini pilihan yang disyorkan jika anda perlu memegang berbilang rujukan kepada objek yang berbeza. Penunjuk boleh diberikan dan ditetapkan semula ke lokasi memori yang berbeza.
std::vector<int*> hello;
Salin selepas log masuk
  • Buat Vektor Rujukan kepada Objek Jenis Tetap: Pendekatan ini boleh diterima jika semua rujukan merujuk kepada objek dari jenis yang sama yang tidak akan diberikan atau diubah suai selepas dimasukkan ke dalam vektor.
struct MyStruct { int data; };

std::vector<MyStruct&> hello;
Salin selepas log masuk

Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa strategi ini boleh membawa kepada rujukan berjuntai jika objek yang dirujuk dipadamkan atau dialihkan.

  • Gunakan Kelas Pembungkus: Anda boleh membuat kelas pembungkus yang menyimpan rujukan secara dalaman dan menyediakan antara muka yang boleh ditetapkan. Ini membolehkan anda menggunakan kelas sebagai elemen bekas.
class Wrapper {
protected:
    int& _data;
public:
    Wrapper(int& data) : _data(data) {}
};

std::vector<Wrapper> hello;
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Menggunakan Rujukan sebagai Elemen dalam Vektor Standard?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan