对 C++ 中的对象输入数组进行排序
Sorting an input array of objects in C++
我有一个基类Shape
,以及其他派生类Circle
、Square
和Triangle
。我创建了三个基类指针的向量。
vector < Shape * > shapes( 3 );
shapes[ 0 ] = &C1; //Circle C1;
shapes[ 1 ] = &S1; //Square S1;
shapes[ 2 ] = &T1; //Triangle T1;
之后,我使用loop
调用virtualViaPointer()
,该将调用虚函数draw()
for (size_t i = 0; i < shapes.size(); ++i) {
cout << endl;
virtualViaPointer( shapes[ i ] );
}
void virtualViaPointer(const Shape * const baseClassPtr)
{
baseClassPtr->draw();
}
每个派生类都有一个函数getArea()
,用于计算每个形状的面积并返回结果。
现在,我想通过使用上面的vector
并调用getArea()
函数对区域进行排序。我该怎么做?例如,我的排序函数应该像这样sortShape(Array, numShape)
,其中Array
是指向创建形状的Shape
指针数组。
任何帮助不胜感激
您可以将 std::sort 与合适的比较函数一起使用:
bool compareArea(const Shape* lhs, const Shape* rhs){
return lhs->getArea() < rhs->getArea();
}
...
std::sort(shapes.begin(), shapes.end(), compareArea);
使用具有用户定义排序标准的排序算法,例如
std::sort(shapes.begin(), shapes.end(), [](Shape * lhs, Shape * rhs)
{
return lhs->getArea() < rhs->getArea();
});
相关文章:
- 显示错误输出的简单数组排序程序
- C 使用单个函数对具有多种值类型的数组排序
- 2D数组排序,空格打乱顺序
- C 2D数组排序
- C++数组排序 - 将"bbba"和"0001"视为不正确排序的问题
- 数组排序功能
- CString 数组排序
- 简单的数组排序/检查 划分和征服版本
- C++ 中的多维数组排序
- 选择在++中对并行数组排序
- C++:二维指针数组排序:选择排序不适用于某些实例
- C++字符串数组排序
- C++中的指针数组排序算法
- 在VC++6中使用向量进行数组排序时出错,而在VC++2012中没有错误
- 将索引数组排序为主数组
- 数组排序、数组输入、数组输出
- C++数组排序,内存错误
- 在嵌入式系统上将数组排序功能从c++移植到c
- 基于其他int数组排序
- 多维数组排序c++奇怪行为