Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我应该如何在cpp中设计结构?_C++_Oop - Fatal编程技术网

C++ 我应该如何在cpp中设计结构?

C++ 我应该如何在cpp中设计结构?,c++,oop,C++,Oop,我得到了以下结构: struct Point { double x, y; std::string name; vector<vector<double>> matrix; } 我从一开始就知道除了最后一个属性矩阵之外的所有属性矩阵,为了计算矩阵,我必须知道一些其他对象 然而,我想保持点结构中的矩阵。因为没有点id或类似的东西可以让我创建地图 只是使用x,y,name构造函数,然后在代码中显式地设置矩阵,这是一种好的样式吗 只是使用x,y,name构造

我得到了以下结构:

struct Point {
   double x, y;
   std::string name;
   vector<vector<double>> matrix;
}
我从一开始就知道除了最后一个属性矩阵之外的所有属性矩阵,为了计算矩阵,我必须知道一些其他对象

然而,我想保持点结构中的矩阵。因为没有点id或类似的东西可以让我创建地图

只是使用x,y,name构造函数,然后在代码中显式地设置矩阵,这是一种好的样式吗

只是使用x,y,name构造函数,然后在代码中显式地设置矩阵,这是一种好的样式吗

是的,那很好,创建一个没有元素的矩阵,如果你知道它的最终尺寸,也许可以设置它的容量

只是使用x,y,name构造函数,然后在代码中显式地设置矩阵,这是一种好的样式吗

是的,那很好,创建一个没有元素的矩阵,如果你知道它的最终尺寸,也许可以设置它的容量

然而,我想保持点结构中的矩阵。因为没有点id或类似的东西可以让我创建地图

关于标准C++的误解。它们不需要任何类型的id,映射只需要对其密钥的类型进行比较操作

请记住,它可以与显式比较参数一起使用。您可以提供一个只比较x、y和/或name字段的字段。例如:

struct mycompare_st {
   inline bool operator() (const Point& x, const Point& y) {
     return x.name < y.name;
};
然后在定义了适当的矩阵类之后使用std::map

同样地,它也接受比较函数,并且可能被赋予相等操作和哈希操作,在某些情况下这样做是值得的

顺便说一句,我不认为将矩阵表示为向量向量是一个好主意,因为根据矩阵的定义,矩阵的每一列都具有相同的大小。我建议您创建自己的矩阵类或抽象数据类型

只是使用x,y,name构造函数,然后在代码中显式地设置矩阵,这是一种好的样式吗

编码风格确实是一个意见问题,但您建议的做法是惯例

你也可以在矩阵中使用某种类型的函数。阅读关于这个问题的文章。也许你的观点可以包含一些 std::unique_ptr matrixptr;场

然而,我想保持点结构中的矩阵。因为没有点id或类似的东西可以让我创建地图

关于标准C++的误解。它们不需要任何类型的id,映射只需要对其密钥的类型进行比较操作

请记住,它可以与显式比较参数一起使用。您可以提供一个只比较x、y和/或name字段的字段。例如:

struct mycompare_st {
   inline bool operator() (const Point& x, const Point& y) {
     return x.name < y.name;
};
然后在定义了适当的矩阵类之后使用std::map

同样地,它也接受比较函数,并且可能被赋予相等操作和哈希操作,在某些情况下这样做是值得的

顺便说一句,我不认为将矩阵表示为向量向量是一个好主意,因为根据矩阵的定义,矩阵的每一列都具有相同的大小。我建议您创建自己的矩阵类或抽象数据类型

只是使用x,y,name构造函数,然后在代码中显式地设置矩阵,这是一种好的样式吗

编码风格确实是一个意见问题,但您建议的做法是惯例

你也可以在矩阵中使用某种类型的函数。阅读关于这个问题的文章。也许你的观点可以包含一些
std::unique_ptr matrixptr;字段?

用向量向量表示矩阵可能不是个好主意,因为子向量的大小应该相同。也许您应该将自己的矩阵类设计为一些抽象数据类型,以减少所有结构成员所需的填充量,将它们从最大对齐要求第一个排序到最小对齐要求最后一个。如果没有一个,也没有一些详细的动机,您的问题非常不清楚,而且可能是意见问题,所以在这里离题了。你的点和矩阵的具体用途是什么?我们猜不到!用向量向量表示矩阵可能是个坏主意,因为子向量的大小应该相同。也许您应该将自己的矩阵类设计为一些抽象数据类型,以减少所有结构成员所需的填充量,将它们从最大对齐要求第一个排序到最小对齐要求最后一个。如果没有一个,也没有一些详细的动机,您的问题非常不清楚,而且可能是意见问题,所以在这里离题了。你的点和矩阵的具体用途是什么?我们猜不到!