C++ 如何以相同的方式最好地修改一组成员对象?

C++ 如何以相同的方式最好地修改一组成员对象?,c++,object,C++,Object,也许我太挑剔了,但我想听听你对如何最好地编写这样的代码的看法(我的问题要复杂得多,但可以这样简化): A类 { 公众: A(); A(常数大小dim0,常数大小dim1); 已分配无效集(const bool); 已分配无效集(常量布尔); 已分配无效集(const bool); 私人: 无效分配(向量和)常量?? 尺寸为0; 尺寸(dim1); bool是分配的; bool已分配; bool是分配的; 向量x; 向量y; 向量z; }; 当给定维度时,我希望以相同的方式分配x、y、z(取决于

也许我太挑剔了,但我想听听你对如何最好地编写这样的代码的看法(我的问题要复杂得多,但可以这样简化):

A类
{
公众:
A();
A(常数大小dim0,常数大小dim1);
已分配无效集(const bool);
已分配无效集(常量布尔);
已分配无效集(const bool);
私人:
无效分配(向量和)常量??
尺寸为0;
尺寸(dim1);
bool是分配的;
bool已分配;
bool是分配的;
向量x;
向量y;
向量z;
};
当给定维度时,我希望以相同的方式分配x、y、z(取决于布尔值的设置方式)。我目前的解决方案是:

解决方案1:创建一个如上所述的分配函数,并调用
if(is_x_分配)allocate(x)

优点:x、y、z将以相同的方式分配->更容易发现错误,以便在将来出现第三维度时修改代码

缺点:as allocate可用于任何其他
向量
,是否为
常量

解决方案2:创建一个allocate_x(),allocate_y(),allocate_z(),调用
if(is_x_u-allocated)allocate_x()

优点:它适应了形势,x/y/z绝对是非常数的

缺点:我必须复制分配代码3次。我可能会犯一些错误+例如,如果第三维度出现,代码修改将更加复杂


您将如何以有效的方式编写此代码?可能是
void allocate()
函数中的lambda函数,但我觉得这会使它的实际功能变得太重要了

std::数组m_xyz+循环或索引分配是什么意思?按照
new
delete
中的方式分配内存?或者将数据推送到向量中?就像
new
delete
,更准确地说是
resize
,对于向量/数组使用dim0和dim1。我们有非常大的数据,这就是为什么如果我们需要一个表,我们只想分配一个表,而不是全部三个表。使用解决方案1有什么错?这似乎根本不是一个矛盾点,你不确定是否使用const。
class A
{
public:
        A ();
        A (const size_t dim0, const size_t dim1);

        void set_is_x_allocated (const bool);
        void set_is_y_allocated (const bool);
        void set_is_z_allocated (const bool);

private:
        void allocate (vector<vector<double>> &) const; ??

        size_t dim0;
        size_t dim1;

        bool is_x_allocated;
        bool is_y_allocated;
        bool is_z_allocated;

        vector<vector<double>> x;
        vector<vector<double>> y;
        vector<vector<double>> z;
};