#include <cstdlib>
#include <vector>
#include <iostream>
using namespace std;
class CFirstLevel {
public:
CFirstLevel (const string & _name): name (_name) {}
// ...
protected:
string name;
};
template <typename T>
class CSecondLevel: public CFirstLevel {
public:
CSecondLevel (const string & _name): CFirstLevel (_name) {}
virtual void PushBack (T) = 0;
virtual void Print (int I) {cout << data [I] << endl;}
// ...
protected:
vector<T> data;
};
template <typename A>
class CThirdLevel: public CSecondLevel<A> {
public:
CThirdLevel (const string & …Run Code Online (Sandbox Code Playgroud) 请参阅示例图片:
\n\n
平面上有一组多边形(凸多边形、非凸多边形,但不自相交)。多边形由顶点 \xe2\x80\x93 点(x和y坐标,笛卡尔坐标系)定义。
\n\n多边形示例集:
\n\n多边形将平面划分为多个区域。多边形的某些部分可能是重叠的(例如第一和第二多边形、第二多边形和第三多边形)。这些重叠部分也是单独的区域。一些多边形可能在内部其他多边形内部(例如第四个多边形位于第二个多边形内部)。
\n\n细分后的示例区域:蓝色、粉色、绿色、橙色、棕色和紫色。
\n\n为简单起见,我想象该平面是一个具有常数x , y的矩形坐标的矩形。
\n\n目标
\n\n检测查询点所在的区域(蓝色、粉色、绿色等)。
\n\n我正在寻找具有这些假设的平面细分的算法和数据结构。
\n可能重复:
就地阵列重新排序?
我有原始的未排序数组,其结构如下:
{D, A, B, E, C}
Run Code Online (Sandbox Code Playgroud)
和排序顺序的原始数组的索引数组:
{2, 3, 5, 1, 4} // Edited. Then I get {A, B, C, D, E}.
Run Code Online (Sandbox Code Playgroud)
我怎样才能通过索引数组简单地重新排列原始数组?
我无法通过索引位置创建新数组和插入元素.