如何在c++中从容器数组中输出动态数组值
How to output dynamic arrays values form container array in c++?
我会先解释一下我的情况。我有一个类,里面有结构,还有这个容器的数组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) {
...
}
相关文章:
- 将值从二维数组输出到文本文件
- 为什么我的数组输出一个不在其中的元素
- 长度为 20 的 Cout'ing 数组输出 23 个字符
- 将矢量数组输出到 tex 文件中,错误
- 来自不同位置的数组输出的执行时间
- 数组输出中缺少字符
- 字符数组输出 - C++
- C 合并的数组输出错误
- 制作垫子类型对象的数组.输出窗口显示同一帧
- C++数组输出地址
- 字符数组输出正确,但实际上没有存储正确的值
- 字符串数组输出
- 为什么在将字符数组输出到控制台时会得到垃圾值
- 字符数组输出额外的字符
- 从字符数组输出到控制台
- 为什么计数从字符数组输出错误的字符
- 动态初始化的 2D 数组输出错误
- C++指针和2d数组输出
- c++中奇怪的char数组输出
- 类函数中的c++字符数组输出