Vector作为类成员
Vector as a class member
你好,我有一个问题:我想要一个向量作为类的成员。这也许是我的问题对你来说更容易了,我为此道歉。
- 我应该如何声明向量?这是正确的吗?
std::vector<int> *myVector;
还是std::vector<int> myVector
? - 我应该如何处理这个矢量在dealloc?
- 如何将数组初始化为if?
正确吗?
if(myCondition)
{
if(!myVector) //is this correct?
myVector = new std::vector<int>(); //is this correct? on this i have a error
}
您肯定想使用std::vector<int> myVector
。不需要初始化它,因为它会在类的构造函数中自动初始化,并在类销毁时释放。
直接使用自动分配:像这样声明它为成员:
class YourClass
{
std::vector<int> myVector;
// ...
};
数组在运行任何构造函数之前自动构造,在对象被释放时自动销毁,您不需要关心它(而且,默认的复制构造函数和赋值操作符将自动优雅地处理复制)。
相反,如果你想只在特定条件之后创建数组,你必须求助于(智能)指针和动态分配,但我认为这相当麻烦(特别是因为你必须正确处理"三大"-复制构造函数,赋值操作符,析构函数);相反,您可以简单地使用自动分配方式分配向量,并使用单独的标志将数组标记为未初始化,或者仅检查其大小是否为0。
这完全取决于上下文——向量意味着什么以及为什么需要它。它应该在多个对象之间共享吗?如果你不知道,就不要用指针,用你的第二个选择。
std::vector<int> myVector;
如果你有强烈的理由使用指针,那么请使用智能指针,为你的情况提供最合适的所有权- shared_ptr
, scoped_ptr
, unique_ptr
或whatever_ptr
大多数情况下,当我们使用标准库时,我们不需要关心内存分配/释放。模板将自动处理它。如。std::vector的内存将根据vector中存储的元素数量增加或减少。这是一个例子。
因此,在你的情况下,你几乎可以这样使用它。
std::vector<int> myVector //your second declaration
if(myCondition)
{
myVector.push(some_int); // use it directly
}
当您创建的Class对象被销毁时,vector所使用的内存将被释放。
相关文章:
- 在C++中将类(带有Vector成员)保存为二进制文件
- 访问 std:vector 的类成员 std:vector 在一个类中与另一个 std:vector
- 有效地初始化 const std::vector 类成员
- 在设计方面:重载vector类型的类成员的插入运算符
- 使用静态 std::vector 类成员时出现访问冲突
- 不是 'std::vector<_Ty> 的成员
- 使用 vector.sort() 的非静态成员函数无效使用
- 将此类的智能指针追加到成员 std::vector
- 在Visual Studio中删除成员std::vector::d ata()
- Boost.interprocess Vector 作为类成员
- 为什么我的类 std::vector 成员总是抛出段错误?
- 使用<string>提升::序列化序列化具有 vector<unique_ptr> 成员的类
- 错误:"类 std::vector<Shape*>"没有名为"sort"的成员
- C 如何推动vector struct的成员
- 成员功能在面向对象的框架中返回std :: vector.size()的效率
- 如何将带有 std::vector 成员的类移动到<class>另一个向量<class>中?
- 动态内存分配与类私有成员C++的 std::vector
- 组织专用成员 Vector<Vector 接口的最佳方式<Type>>
- 初始化成员Vector值
- 具有自己成员的成员Vector的类