首页 >后端开发 >C++ >为什么我不能使用引用作为标准向量中的元素?

为什么我不能使用引用作为标准向量中的元素?

DDD
DDD原创
2024-12-26 16:13:13941浏览

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