c++ - 如何专门化网格类?

标签 c++

我想知道如何专门化网格类?例如,如果我们有一个由多边形类中的多边形组成的网格类。我们如何根据应用专门化网格以支持标量场、 vector 场等。也许对于高度复杂的模拟,我们需要 3 个标量场和 4 个 vector 场。相反,对于简单的模拟,我们只需要一个标量场就可以了。

所以所谓特化,我的意思是向多边形添加属性以存储本地数量。

这是一个悬而未决的问题,我不知道该怎么做。这可能是不可能的。但是 c++ 很灵活,每个允许在实践中做一些接近的事情的解决方案都会有所帮助。

最佳答案

您可以使用模板(假设多边形是顶点的集合,网格是多边形的集合)。这是一个简单的例子:

#include <array>
#include <vector>

template <typename T>
struct Vector {
  T x, y, z;
};

template <typename T, size_t N>
struct Polygon {
  std::array<T, N> vertices;
};

template <typename T>
struct Mesh {
  std::vector<T> polygons;
};

int main() {
  // mesh with polygons of float-vertices with 3 dimensions
  Mesh<Polygon<Vector<float>, 3>> mesh;

  mesh.polygons.push_back(
      {{{{1.f, 2.f, 3.f}, {1.f, 2.f, 3.f}, {1.f, 2.f, 3.f}}}});
}

关于c++ - 如何专门化网格类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56598858/

相关文章:

c++ - 如何使用 GTK+ 设置 CMakeLists?

c++ - 输入字母 f 或任何字母并计算字母表模式,如 abc abcd abcde abcdef 但它仅在我按 0 时有效

c++ - 多屏系统C中的鼠标光标位置

c++ - 迷宫求解器的复杂性

c++ - 如何从另一个平台(iOS 到 Windows)打开和读取 SQLite 数据库

java - 了解 JNI 参数的安全访问

具有可变大小元素的 C++ "vector"

c++ STL map.find() 或 map.operator[] 不能在带有 const 限定符的类成员函数中使用

c++ - 如何结束COM自动化过程中执行的进程

c++ - 定义使用模板的构造函数