语境:
我正在尝试学习C++(在阅读一些stackoverflow社区推荐的书籍时),我决定尝试制作一个具有基本功能的元胞自动机程序,仅仅是为了学习(因为它对我来说很有趣).
题:
是否有一种更自然的方式来表示Cell元素矩阵而不是使用vector <vector <Cell >>?我正在寻找标准库或其他一些流行的库中的潜在替代品.关于表现的评论将不胜感激.
我没有使用向量向量的麻烦,也没有语法问题,我只想知道替代方案.而且因为我没经验,每次我写一些代码,我想可能有更多直接的方法来做我自己找不到的.
这是我的第一个问题,所以如果我针对问题的指导方针做了一些事情,我会非常感激你指出的.
有用的相关问题供将来参考:vector <vector <double >>是一个制作矩阵类的好方法吗?
我首先假设一般来说,在堆栈中分配小对象,在动态内存中分配大对象是个好主意.另一个假设是,在尝试学习内存,STL容器和智能指针时,我可能会感到困惑.
考虑下面的例子,我有一个必须通过智能指针在免费商店中分配的对象,例如,我可以依赖客户从工厂获取所述对象.此对象包含一些使用STL容器专门分配的数据,该容器恰好是std :: vector.在一种情况下,这个数据向量本身是使用一些智能指针动态分配的,而在另一种情况下我只是不使用智能指针.
设计A和设计B之间是否存在实际差异,如下所述?
情况A:
class SomeClass{
public:
SomeClass(){ /* initialize some potentially big STL container */ }
private:
std::vector<double> dataVector_;
};
Run Code Online (Sandbox Code Playgroud)
情况B:
class SomeOtherClass{
public:
SomeOtherClass() { /* initialize some potentially big STL container,
but is it allocated in any different way? */ }
private:
std::unique_ptr<std::vector<double>> pDataVector_;
};
Run Code Online (Sandbox Code Playgroud)
一些工厂功能.
std::unique_ptr<SomeClass> someClassFactory(){
return std::make_unique<SomeClass>();
}
std::unique_ptr<SomeOtherClass> someOtherClassFactory(){
return std::make_unique<SomeOtherClass>();
}
Run Code Online (Sandbox Code Playgroud)
使用案例:
int main(){
//in my case I can reliably assume that objects themselves
//are going to always be allocated …
Run Code Online (Sandbox Code Playgroud)