我是c +的新手,只知道非常基础知识。数组,如果是动态和指针..
我正在编写代码,这就是我想要做的。 例如,在2D方形平面(10x10)上,我随机散布了1000个点(大小为100的数组)。 2D方形平面分为10个较小的矩形。现在我想将1000点分成这些较小的矩形。基本上,我想制作10个动态数组(每个“小矩形”一个),每个数组都包含相应区域内的散点。
我想到的最基本的迭代只是使用if if if if ... 但有了这个,我必须为每个区域重复1000次迭代。而且我认为这是非常低效的。
答案 0 :(得分:0)
编写一个函数来对单个点进行分类,即确定它属于哪个区域。作为一个可以扩展的简单示例:
std::size_t classify(double px, double py, double split) {
if (px < split) {
return 0; // left plane
} else {
return 1; // right plane
}
}
然后,迭代点并将它们放入各自的容器中:
std::vector<std::vector<point_t>> region{2};
for (auto const & point : points) {
region[classify(point.x, point.y, split)].push_back(point);
}
通过这种方式,您可以对所有点进行一次迭代,对每个点进行分类(在您的情况下应该可以在恒定时间内完成),这是所需的最小工作量。