我正在尝试在函数中创建一个对象,但我遇到的问题是变量名必须在运行时定义。有什么我能用数组做的事情,允许ne动态地在函数中创建一个变量,最好给它一个与上次调用函数时创建的名称不同的名字?
***我在C ++工作
编辑: 我不能提供任何代码,因为我现在没有任何代码。我现在所拥有的只是伪代码。
基本上,我正在尝试创建一个链表,但是我想要使用的addNewItem()方法需要使用相同的方法来创建不同的对象。
编辑: 从技术上讲,我们不会制作链接列表,只是更多的概念证明,以了解它们的工作原理。
编辑:这是代码:
#include "linklist.h"
#include <iostream>
using namespace std;
struct linklist
{
Student * obj;
linklist * next;
};
linklist * head;
int main()
{
}
void addStudent(char * newsdnt)
{
if(!head){
linklist * a = new linklist;
a->obj = new Student(newsdnt);
a->next = 0;
head = a;
return;
}else{
linklist * a = new linklist;
a->obj = new Student(newsdnt);
a->next = 0;
if(!head->next){
head->next = a; // Can only have one or two items in list
}
}
}
答案 0 :(得分:2)
如果您想要链接列表 - 请调用new以创建每个新节点,然后将其添加到列表中。
像这样的Smth:void addStudent(char * newsdnt)
{
linklist* a = new linklist;
a.obj = new Student(newsdnt);
a.next = 0;
if( head == 0 ) {
head = a;
} else {
linklist* whereToAdd = head;
while( whereToAdd.next != 0 ) {
whereToAdd = whereToAdd.next;
}
whereToAdd.next = a;
}
}
答案 1 :(得分:2)
构建(单独)链接列表的最简单方法是在前面添加新项目:
linklist *head = 0;
...
a->next = head;
head = a;
...
如果在O(N)时间内在尾部添加项目是可以接受的,那么每次都扫描列表以找到结束。
linklist head;
...
a->next = 0;
item = &head;
while (item->next != 0)
item = item->next;
item->next = a;
...
如果必须在O(1)时间内在列表尾部添加新项目,则保留一个循环列表和指向列表尾部的指针(以便tail->next
是指向该列表尾部的指针名单的负责人)。 (之前的列表结构可以称为“开放式”。)
linklist root = { 0, &root };
linklist *tail = &root;
...
a->next = tail;
tail->next = a;
...
注意:迭代整个列表的终止条件(例如,查找列表中的项目)因使用的结构(循环与开放式)而异。
警告:未经测试的代码!
如果您不确定O(1)和O(N)的含义,请阅读“Big O”符号。
答案 2 :(得分:0)
我会建议一个载体:
#include <vector>
using namespace std;
void foo()
{
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
cout << v[0] + v[1] << endl;
}
答案 3 :(得分:0)
假设您需要某些类型N
的{{1}}个对象:数组在C ++中非常存在。 STL也是如此,它为您提供了许多机会。您需要定义如何访问和使用这些对象 - 这会影响容器的选择。但是,您是否可以发布一些代码,以便我们的答案不那么模糊(对您更有帮助)?
答案 4 :(得分:0)
我不确定你想要什么,但听起来你可以使用Multiset。
请提供更多详情,我或许可以提供更多帮助。
答案 5 :(得分:0)
对于初学者,我建议你将你的链表结构重命名为节点,并添加一个新的链表结构,它包含头部,以及(可能)当前/尾部指针。然后,您应该在此类/结构中实现允许您操作它的方法。
目前您缺少的是一个遍历列表的方法(递归获取下一个指针直到结束)并返回指向最后一个元素的指针。完成后,可以将该元素的下一个指针设置为新创建的对象。