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