当前位置: 首页 > 知识库问答 >
问题:

如何在类外使用std::sort()对类中的私有数组进行排序

蓝鸿哲
2023-03-14

我的代码看起来像这样:

class A
{
//some code here
}

//Class B contains an array of elements of type A

class B
{
//...
private:
    A private_array[1000];
}

//    This function gives a score of A.
//    For reasons I can't explain now, it 
//    can't be a method of class A

int score( A& element)
{
    //....
}

我想使用std::sort通过score()函数对b.private_array进行排序,但我不能,因为它是私有的(我不想将它公开)。这有什么办法解决吗?

编辑:我解决了。这是我的解决方案:我在B中有两个公共方法begin和end

A* begin()
{
    return private_array;
}
A* end()
{
    return private_array + 1000;
}

然后我只是将这些方法传递给std::sort。

共有1个答案

黄博艺
2023-03-14

我想这会解决你的问题。

我们可以访问类的私有数据成员而不使用成员或朋友函数吗?

 类似资料:
  • 正如我的问题所描述的,如何在java中对类型数组的列表进行排序? 这是我的ListClass 这是我的驾驶程序 现在,我希望在ListClass中有一个通用排序方法,可以对通过驱动程序生成的任何类型的列表(字符串、整数、双精度、浮点等)进行排序。

  • 我知道关于这个问题有很多答案。我试着跟随它,但它不会显示我想要的结果。有一个 输入 603 502 201 402 303 301 我希望 输出 60 3 50 2 40 2 30 3 30 1 20 1 但是如果我打印优先级队列,它将显示 60 3 50 2 40 2 20 1 30 3 30 1 我不知道为什么。。 下面是我的代码

  • 本文向大家介绍javascript sort()对数组中的元素进行排序详解,包括了javascript sort()对数组中的元素进行排序详解的使用技巧和注意事项,需要的朋友参考一下 javascript sort()可以对数组中的元素进行排序, 语法格式:arrayObject.sort(sortby) arrayObject是数组对象,sortby为可选项,用来确定元素顺序的函数的名称,如果这

  • 是的,这是家庭作业,但我一直在想什么。comparator类应该实现java。util。sort()方法的第二个参数应该是我的Comparator类的一个实例。 到目前为止,我的comparator类如下所示: 我有一个单独的方法对数组进行排序,但此方法使用compareTo() 除了使用单独的comparator类之外,我应该使用什么方法?我完全不知道该怎么办。 我的Rational类看起来像:

  • 问题内容: 我的数组不包含任何字符串。但是它包含对象引用。每个对象引用都通过toString方法返回名称,id,作者和发布者。 现在,我需要按名称对对象数组进行排序。我知道如何排序,但是我不知道如何从对象中提取名称并对它们进行排序。 问题答案: 你有两种方法可以使用Arrays实用程序类 实现一个Comparator并将数组与比较器一起传递给sort方法,该方法将其作为第二个参数。 在对象所属的类

  • 我有一个名为map的HashMap,它将字符存储为键,将整数存储为值,然后使用以下代码将其存储到名为entries的ArrayList中: 现在我正在尝试根据整数值而不是键对这些条目进行排序。我试图使用一个lambda表达式来实现比较器接口,但它不起作用。这是我的代码: 以下是我得到的错误: 这一行有多个标记 > 语法错误,插入“)”以完成表达式 类型集合中的方法sort(列表,比较器)不适用于参