将kdtree写入/读取到文件中 我是C++和数据结构的新手,我有代码来逼近最近的邻居,并且在C++中实现了kd树。p>
我的问题是如何将kd树写入文件以及如何从该文件中读取它将kdtree写入/读取到文件中 我是C++和数据结构的新手,我有代码来逼近最近的邻居,并且在C++中实现了kd树。p>,c++,kdtree,C++,Kdtree,我的问题是如何将kd树写入文件以及如何从该文件中读取它 感谢您的帮助请参阅。您可以在几种输出格式之间选择——纯文本、XML、二进制< /p> < P>如果您是C++新手,您只需了解您需要什么,并以正确的简单方式实现它。因此不需要依赖于boost。 首先,kd树可能存储指向对象的指针,而不拥有它们。考虑通过实际拥有对象的结构(即负责其生命周期)卸载,从而避免重复和泄漏。第二,树通常不存储在文件中,而是在每次加载某些几何体时构建它们,因为它们需要的存储空间超过一个对象数组,并且它们可以包含重复项,需
感谢您的帮助请参阅。您可以在几种输出格式之间选择——纯文本、XML、二进制< /p> < P>如果您是C++新手,您只需了解您需要什么,并以正确的简单方式实现它。因此不需要依赖于boost。 首先,kd树可能存储指向对象的指针,而不拥有它们。考虑通过实际拥有对象的结构(即负责其生命周期)卸载,从而避免重复和泄漏。第二,树通常不存储在文件中,而是在每次加载某些几何体时构建它们,因为它们需要的存储空间超过一个对象数组,并且它们可以包含重复项,需要单独跟踪。 因此,如果您知道谁拥有您的对象,您的读/写过程将如下所示
int main(int argc, char** argv) {
std::string filename = "geometty_dump.txt"
if (argc == 2) { // filename explicitly provided
filename = *argv[1];
}
ProblemDriver driver; // stores geometry owner\owners
bool res = driver.GetGeometry(filename);
if (res) res = driver.SolveProblem();
if (res) res = driver.DumpGeometry();
return res;
}
在你访问几何数据本身的地方(如<代码>双x,y;<代码>),你必须包含<代码> <代码>,如果你的问题是关于它的话,请尝试阅读关于C++的一些东西。拥有x,y的对象必须具有友元对应函数
ostream& operator<< (ostream out&, const MyPoint& point) {
out << point.x() << point.y() << '\n';
}
ostream& operator>> (istream in&, MyPoint& point) {
double x, y;
in >> x >> y;
point.set(x, y);
}
ostream&operator x>>y;
点集(x,y);
}
这意味着您可以在调用这些函数的ProblemDriver
方法(GetGeometry
,DumpGeometry
)中分别创建流和ifstream
)