如何在 c++ 中访问对象数组
How to access the object array in c++?
我是编程新手。我的目标是在不使用STL的情况下实现C++煎饼排序。我有3个班级,它们是pancake
,pancakepile
和MpancakePiles
。我有一个关于访问对象数组的问题。我的代码如下:
- 我的煎饼堆是3D堆,Z是它的高度。
- 所以对于一个煎饼堆,它有Z煎饼。
- 我需要找到这些 Z 煎饼的最大尺寸指数。
但是,我不知道如何访问对象数组,例如如果要在pancake P
内处理对象数组size
,我应该在???
区域中填写什么。 Max
是一个已定义的函数。不使用STL没有特别的理由。 N
是静态大小,N=512
. burnt=0
的意思是烧焦的一面朝下。
int Max(int size[], int n)
{
int mi,i;
for(mi=0,i=0;i<n;i++)
if(size[i]> size[mi])
mi=i;
return mi;
}
class pancake
{
public:
int size;
bool burnt;
void flip_pancake()
{
burnt=~burnt;
}
};
class pancakepile
{
public:
pancake P[N];
int Z;
void pan_sort_ascending()
{
int mi=Max(???,Z);
......
}
}
你扔掉了你当前的pan_sort_ascending
实现,并将其替换为对std::sort
的调用,传递一个函数来描述两个煎饼中的哪一个应该低于另一个。
#include <algorithm>
// A pancake is smaller than another if it's size is less
bool pancake_less(const pancake & lhs, const pancake & rhs)
{
return lhs.size < rhs.size;
}
// sorts smallest first
void pancakepile::pan_sort_ascending()
{
std::sort(P, P + Z, pancake_less);
}
现在如果你想要一个pan_sort_descending
,你可以直接翻转比较的逻辑
// A pancake is larger than another if it's size is greater
bool pancake_greater(const pancake & lhs, const pancake & rhs)
{
return lhs.size > rhs.size;
}
// sorts largest first
void pancakepile::pan_sort_descending()
{
std::sort(P, P + Z, pancake_greater);
}
我不确定你想要什么,但是如果你只想返回煎饼列表中最大的煎饼,我会在煎饼堆类中实现一个成员函数:
class pancakepile
{
public:
pancake P[N];
int Z;
void pan_sort_ascending()
{
int mi=max();
......
}
pancake max()
{
pancake bigestPancake;
foreach(pancake pan, P)
{
if(bigestPancake.Z < pan.Z)
bigestPancake = pan;
}
return bigestPancake;
}
}
编辑:如果你想得到最大的煎饼的索引,你可以这样做:
class pancakepile
{
public:
pancake P[N];
int Z;
void pan_sort_ascending()
{
int mi=max();
......
}
int max()
{
int bigestPancakeIndex;
for(int i = 0; i < P.size(); i++)
{
if(P[bigestPancakeIndex].Z < P[i].Z)
bigestPancakeIndex= i
}
return bigestPancakeIndex;
}
}
相关文章:
- 使用迭代器时如何访问对象在向量中的位置?
- 无法通过指针访问对象的成员
- 如何从传递到对象的对象内部访问对象的类属性?
- 有没有办法在C++中循环访问对象的不同数据成员
- 如何访问对象动态数组中的私有成员变量?
- c++ 循环访问对象列表并删除对象
- 循环访问对象列表 c++
- 访问对象的取消引用值的语法
- 如何访问对象的成员变量的取消引用值
- C++:访问对象内部子对象的方法
- 如果访问对象,则指向的对象内部的指针会更改内存位置
- 是否可以从 C++ 中的构造函数访问对象名称?
- 仅允许访问对象的成员,而不允许访问对象本身
- 从地图访问对象会导致新对象C 的实例化
- 如何在数组中访问对象内的字符串
- 在C 中运行时从指针访问对象实例
- 有关使用矢量迭代器访问对象方法的问题
- 当对象的指针存储在矢量中时,如何访问对象中的方法?
- 显式调用"运算符 new"后无法访问对象的函数
- 尝试访问对象数组中的对象,但只保存了一个对象