我能够分别读取文件和填充矢量。创建泛型模板类,通过变量对不同类进行排序
有没有一种方法可以创建一个模板来按照一个标准对各个类进行排序? 我使用的方法是单调乏味的,我必须创建很多模板类来适应每个向量。
我需要一些想法上创建一个通用模板
//consist if accessors and mutator x and y
vector<Point2D> point2d;
//consist if accessors and mutator x and y and z
vector<Point3D> point3d;
//consist if accessory and mutator 2 Point2D point
vector<Line2D> line2d;
//consist if accessory and mutator 2 Point3D point
vector<Line3D> line3d;
//sort_crit is a global variable that change according to user menu
//sort_order is a global variable that change according to user menu (ASC or DSC)
if(sort_crit == "X-Coordinate") {
sortByX(point2d, point2d.size(), sort_order);
}
我的数据
Point2D, [3, 2]
Line3D, [7, 12, 3], [-9, 13, 68]
Point3D, [1, 3, 8]
Line3D, [7, -12, 3], [9, 13, 68]
Point3D, [6, 9, 5]
Point2D, [4, 8]
Line3D, [70, -120, -3], [-29, 1, 268]
Line2D, [7, 12], [-9, 4]
Line3D, [25, -69, -33], [-2, -41, 58]
Point3D, [6, 9, -50]
Point2D, [12, 80]
Point2D, [9, 8]
我现在的模板只为的Point2D
template <class T>
void sortByX(vector<T> a1, int size, string type) {
if (type == "ASC") {
for(int x=0; x<size; x++) {
for(int y=0; y<size-1; y++) {
if(a1[y].getX()>a1[y+1].getX()) {
int tempx = a1[y+1].getX();
a1[y+1].setX(a1[y].getX());
a1[y].setX(tempx);
int tempy = a1[y+1].getY();
a1[y+1].setY(a1[y].getY());
a1[y].setY(tempy);
}
}
}
} else if (type == "DSC") {
for(int x=0; x<size; x++) {
for(int y=0; y<size-1; y++) {
if(a1[y].getX()<a1[y+1].getX()) {
int tempx = a1[y+1].getX();
a1[y+1].setX(a1[y].getX());
a1[y].setX(tempx);
int tempy = a1[y+1].getY();
a1[y+1].setY(a1[y].getY());
a1[y].setY(tempy);
}
}
}
}
for(int x=0; x<size; x++) {
cout << a1[x] << endl;
}
}
目前还不清楚您是否有多个不同的排序标准。 – b4hand
没有你向我们展示你的各种类的接口,也不可能建议一个通用的实现。 – b4hand