结构节点与标准::列表< >

struct node vs std::list< >

本文关键字:节点 gt lt 结构 列表 标准      更新时间:2023-10-16

在试图理解链表时,我遇到了以下或类似的构建链表的方法:

typedef struct node{
    int data;
    node *next;
}node;
node* init(int a[], int n){
    node *head, *p;
    for(int i=0; i<n; ++i){
        node *nd = new node();
        nd->data = a[i];
        if(i==0){
            head = p = nd;
            continue;
        }
        p->next = nd;
        p = nd;
    }
    return head;
}

但是为什么要用这个来代替std::list<..>呢?

因为这样它在C中也能工作。

当你正在编写一个可以从C和C++中使用的库时,这很有用。

也可能是代码以前是C,然后转移到C++,在代码的其他部分使用一些C++功能。

由于您标记了问题C++而不是C,因此的最合理答案

但是为什么要使用这个而不是std::list<..>

如果可以使用标准库及其单链表类模板std::forward_list,则不会使用。例如,一些嵌入式环境可能允许您使用C++及其大部分功能,但不是所有的标准库。