小编art*_*pod的帖子

是否有更自然的方式来表示T的矩阵而不是向量<vector <T >>?

语境:

我正在尝试学习C++(在阅读一些stackoverflow社区推荐的书籍时),我决定尝试制作一个具有基本功能的元胞自动机程序,仅仅是为了学习(因为它对我来说很有趣).

题:

是否有一种更自然的方式来表示Cell元素矩阵而不是使用vector <vector <Cell >>?我正在寻找标准库或其他一些流行的库中的潜在替代品.关于表现的评论将不胜感激.

我没有使用向量向量的麻烦,也没有语法问题,我只想知道替代方案.而且因为我没经验,每次我写一些代码,我想可能有更多直接的方法来做我自己找不到的.

这是我的第一个问题,所以如果我针对问题的指导方针做了一些事情,我会非常感激你指出的.

有用的相关问题供将来参考:vector <vector <double >>是一个制作矩阵类的好方法吗?

c++ standards vector matrix

6
推荐指数
1
解决办法
899
查看次数

对于数据成员,如果包含对象已经在动态内存中,那么动态分配此变量(或不是)之间是否有任何区别?

我首先假设一般来说,在堆栈中分配小对象,在动态内存中分配大对象是个好主意.另一个假设是,在尝试学习内存,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)

c++ stl smart-pointers c++14

6
推荐指数
2
解决办法
174
查看次数

标签 统计

c++ ×2

c++14 ×1

matrix ×1

smart-pointers ×1

standards ×1

stl ×1

vector ×1