如何在c++中从容器数组中输出动态数组值

How to output dynamic arrays values form container array in c++?

本文关键字:数组 输出 动态 c++      更新时间:2023-10-16

我会先解释一下我的情况。我有一个类,里面有结构,还有这个容器的数组calss

class A
{
    struct B
    {
        int I;
        B *next;
    };
    B *objOfB; //Array of structures
    B *lastB;  //Pointer to last objOfB element
public:
    //Method for adding values to objOfB
    void addB(int i)
    {
        B *temp = new B;
        temp->I = i;
        temp->next = NULL;
        if(ing == NULL)
        {
            last = temp;
            objOfB = temp;
        }
        else
        {
            last->next = temp;
            last = temp;
        }
    }
};

对象的数组用于某些函数文件

A * objA = A[100];

我想不出的是如何交objOfB的单个值。有一个简单的例子,它将从objOfB的开始到结束。

for (B *temp = objOfB; temp != NULL; temp = temp->next) {
  cout << temp->I << endl;
}

我想在函数文件中执行这个循环,但我想不出不返回所有objOfB的方法(它用于循环B *temp = objOfB;的第一部分)。以下是我创建的执行此循环的方法:

B listOfBs() { return *objOfB;  }
B toNextB() { return *objOfB->next; }
bool noLastB(){ return objOfB->next != NULL; }

它的工作原理可以在循环中使用:

for (B *temp = listOfBs(); noLastB(); temp = toNextB()) {
  cout << temp->I << endl;
}

然而,我知道这三种方法都不适合这个循环。所以我需要一些方法来返回值,另一个方法来告诉下一个值应该被读取。。。希望我努力实现的目标不会更清楚。

如何使用方法传递结构的容器类动态数组值

据我所知,您有类A(表示单链表的包装器)和嵌套在其中的简单struct B

struct B
{
    int I;
    B *next;
};

并且您希望类A也提供一个接口,它将提供在该列表中迭代的更简单的方法。

起初,这个数据成员非常令人困惑:

B *objOfB; //Array of structures

因为您将其视为指向第一个元素的指针。好的开始是将其重命名为:B *head;,所以现在B的每个实例都可以指向next元素,并且您有指向head的指针,最后一个元素是next等于NULL的元素,您不需要B *lastB;

然后你会意识到你试图提供的方法没有多大意义:

B listOfBs() { return *head;  }
B toNextB() { return *head->next; }
bool noLastB(){ return head->next != NULL; }

这些方法没有理由按值返回,并且CCD_ 15的定义无论如何都必须对调用者可见。为了KISS原则,只需将head作为A的公共数据成员,并将A重命名为更有意义的名称,例如MyList。然后让呼叫者这样做:

MyList list;
...
for (B* b = list.head; b != NULL; b = b->next) {
    ...
}