在C ++中通过另一个结构成员访问结构

时间:2018-06-03 02:24:22

标签: c++ linked-list

我试图使用其他结构访问结构。从下面的程序中,element是Node的成员。在这条线上#34; temp->元素* e_temp; ",我无法链接"元素" Node的成员到"元素"结构对象。 编译错误说"' e_temp'未在此范围内宣布"。我错过了什么?

#include <vector>
#include <cstdlib>
using namespace std;
typedef struct Elements
{
    int data;
    struct Elements *next;
}elements;

typedef struct Node
{
    int sno;
    elements *element;
    struct Node *next;
}node;

void add(int sno, vector<int> a)
{
    node *temp;
    temp = new node;

    temp->element *e_temp;
    e_temp = new elements;


    temp->sno = sno;
    while(a.size())
    {
        temp->e_temp->data = a[0];
        temp->e_temp = temp->e_temp->next;
        a.erase(a.begin());    
    }
}


int main()
{
    vector<int> a{1,2,3};
    int sno = 1;
    add(sno, a);
    return 0;
}

2 个答案:

答案 0 :(得分:1)

如果您只是想申报当地人,可以auto e_temp = new elements,但我认为您想要的是temp->element = new elements; 然后跟进你的其余代码来引用temp的元素而不是e_temp。

    temp->element->data = a[0];
    temp->element = temp->element->next

此外,我尝试养成使用new并使用std::shared_ptrstd::unique_ptr代替的习惯。

答案 1 :(得分:0)

e_temp的正确声明是

>>> df.values.ptp()
2.0412909999999997

df[:] = df.values.ptp() 不使用代码的任何部分。