加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 指向矢量与指针向量与指向矢量向量的指针

发布时间:2020-12-16 07:50:55 所属栏目:百科 来源:网络整理
导读:只是想知道你认为什么是C中的向量的最佳做法. 如果我有一个包含一个向量成员变量的类. 这个向量应该何时被声明为: “Whole-object”矢量成员varaiable包含值,即向量 MyClass my_vector; 指向向量的指针,即向量 MyClass * my_vector; 指针向量,即向量 MyClas
只是想知道你认为什么是C中的向量的最佳做法.

如果我有一个包含一个向量成员变量的类.
这个向量应该何时被声明为:

>“Whole-object”矢量成员varaiable包含值,即向量< MyClass> my_vector;
>指向向量的指针,即向量< MyClass> * my_vector;
>指针向量,即向量< MyClass *> my_vector;
>指向向量向量的指针,即向量< MyClass *> * my_vector;

我在我的一个类中有一个具体的例子,其中我当前已经宣告了一个向量作为情况4,即向量< AnotherClass *> * my_vector;
其中AnotherClass是我创建的另一个类.

然后,在我的构造函数的初始化列表中,我使用new创建向量:

MyClass::MyClass()
: my_vector(new vector<AnotherClass*>())
{}

在我的析构函数中,我做如下:

MyClass::~MyClass()
{
  for (int i=my_vector->size(); i>0; i--)
  {
    delete my_vector->at(i-1);
  }
  delete my_vector;
}

向量的元素被添加到我的类的一个方法中.
我不知道有多少对象将被提前添加到我的向量中.这是在代码执行时基于解析xml文件来决定的.

这是好的做法吗或者应该将向量声明为其他情况1,2或3?

何时使用哪种情况?

我知道一个向量的元素应该是指针,如果它们是另一个类(多态)的子类.但是在任何其他情况下都应该使用指针?

非常感谢你!!

解决方法

通常解决方案1是你想要的,因为它是C中最简单的:你不必担心管理内存,C做所有这些(例如,你不需要提供任何析构函数).

有一些具体的情况,这不起作用(最值得注意的是使用多形态物体),但一般来说,这是唯一的好办法.

即使使用多形态对象,或者当您需要堆分配对象(无论什么原因)时,原始指针几乎不是一个好主意.而是使用智能指针或智能指针的容器.现代C编译器从即将推出的C标准中提供shared_ptr.如果您使用的编译器尚未使用,则可以使用implementation from Boost.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读