首頁 >後端開發 >C++ >為什麼我不能使用引用作為標準向量中的元素?

為什麼我不能使用引用作為標準向量中的元素?

DDD
DDD原創
2024-12-26 16:13:13874瀏覽

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

為什麼我的 Vector 不接受引用?

問題: Vector有效,但 Vector導致編譯器錯誤。

說明:

向量和其他容器要求其組件類型可分配。引用是不可分配的類型,因為它保存對特定記憶體位置的常數引用。一旦引用被初始化,它就不能指向不同的物件。

可能的方法:

  • 使用指針代替:這是如果您需要保存對不同對象的多個引用,推薦的選項。指標可以分配和重新分配到不同的記憶體位置。
std::vector<int*> hello;
  • 建立固定型別物件的參考向量:如果符合下列條件,此方法是可以接受的:引用引用相同型別的對象,在插入後不會對其進行賦值或修改
struct MyStruct { int data; };

std::vector<MyStruct&> hello;

但是,需要注意的是,如果引用的物件被刪除或移動,此策略可能會導致懸空引用。

  • 使用包裝類: 您可以建立一個包裝類,它在內部保存引用並提供可分配的介面。這允許您將該類別用作容器元素。
class Wrapper {
protected:
    int& _data;
public:
    Wrapper(int& data) : _data(data) {}
};

std::vector<Wrapper> hello;

以上是為什麼我不能使用引用作為標準向量中的元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn