2

我有一个接受 const 向量引用的方法。我想将向量的可变版本放在堆上并返回它

这可以编译,但我不确定它是否真的按照我的想法做。我不确定我是否对这里的记忆感到幸运:

vector<Type> *vect = new vector<Type>;
*vect = vectReference;
4

4 回答 4

2

没关系,您制作了动态分配的vector副本。但同样可以使用复制构造函数而不是默认构造函数和赋值运算符以更短的方式完成:

vector<Type> *vect = new vector<Type>(vectReference);

还想建议使用智能指针而不是原始指针:std::unique_ptr或者std::shared_ptr- 取决于您的代码语义。

于 2012-09-28T07:05:02.980 回答
1

据我了解,你做对了。在第二行,您将向量从 vectReference 复制到堆上分配的 vect 中。

于 2012-09-28T07:01:44.717 回答
1

此代码工作正常。

但是,您需要确保“vect”分配空间,稍后应释放该空间,因此您可能希望使用 std::auto_ptr 来确保对象被销毁:

std::auto_ptr<std::vector<Type> > vect(new std::vector<Type>);
*vect = vectReference;
于 2012-09-28T07:04:44.530 回答
1

这将完全执行您想要的。您甚至可以通过以下方式缩短它:

vector<Type> *vect = new vector<Type>(vectReference);

调用复制构造函数而不是赋值运算符。

于 2012-09-28T07:04:48.317 回答