如何在C ++中拥有一个包含数组的节点结构?

时间:2017-11-21 21:24:01

标签: c++ arrays linked-list

我无法在网上找到关于使用包含数组的单个节点创建链接列表的任何内容。

struct node{
    string list[]; 
    string var;
    node* next = NULL; 
    node* previous = NULL; 

}; 

void insertion(node*& start, string name, string words[]){
  node* temp = new node;
  temp->var = name;
  temp->list = words;

  if (!start) { 
    start = temp;
    return;
  } else { 
    node* tail = start;
    while(tail->next) {
      tail=tail->next;
    }
    tail->next = temp;
    temp->previous = tail;
 }

上面的代码给出了错误:

  

web.cpp:在函数'void insertion(变量*&,std :: __ cxx11 :: string,std :: __ cxx11 :: string *)'中:   web.cpp:18:16:错误:将'std :: __ cxx11 :: string * {aka std :: __ cxx11 :: basic_string *}'分配给'std :: __ cxx11 :: string [0] {aka的不兼容类型std :: __ cxx11 :: basic_string [0]}'        temp-> list = words;

1 个答案:

答案 0 :(得分:1)

首先,string list[]不允许作为数据成员定义,因为它是不完整的类型。因此,您的代码实际上应该在struct node的定义中给出错误。

除了这个问题,在C ++中,数组类型不可分配(无论其大小如何)。 即使你写了:

struct node{
    string list[4];
    string var;
    node* next = NULL;
    node* previous = NULL;

};

int main(){

    node n1;
    node n2;

    n1.list = n2.list;  // error: array types are not assignable
}

您会收到错误消息,指出无法在array1 = array2的意义上分配数组类型。

相比之下,如果您使用了vector<string>,则可以根据需要分配以及让矢量动态增长。