相关疑难解决方法(0)

使用智能指针的C++链接列表

我只使用链接列表的原始指针和模板.例如,成员数据,Node<T>* head;当我插入节点时,其中一行是head = new Node<T>(data);.

但是,现在我需要使用智能指针,我不知道如何更改它以使用智能指针.会员数据是否会更改为shared_ptr<Node<T>> head;,另一行会更改为
head = shared_ptr<Node<T>>( new <Node<T>>(data) );

c++ templates pointers linked-list

8
推荐指数
2
解决办法
7018
查看次数

为什么不使用"new"运算符创建的对象获取相同的地址

通过这个问题,一个答案说创建的对象在其范围之外被销毁.为了清楚地理解这个概念,我编写了以下代码:

#include <iostream>

using namespace std;

struct Node{
    int val;
    Node *next;
    Node(int x) : val(x) , next(NULL){}
};

int main(){
    for(int i=0;i<10;i++){
        int someval = rand()%100;
        Node somenode = Node(someval);
        printf("Address for object %d is %p \n",i+1, &somenode);
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

Address for object 1 is 0x7ffc32ff26b0 
Address for object 2 is 0x7ffc32ff26b0 
Address for object 3 is 0x7ffc32ff26b0 
Address for object 4 is 0x7ffc32ff26b0 
Address for object 5 is 0x7ffc32ff26b0 
Address for object 6 is 0x7ffc32ff26b0 …
Run Code Online (Sandbox Code Playgroud)

c++ new-operator

2
推荐指数
2
解决办法
164
查看次数

标签 统计

c++ ×2

linked-list ×1

new-operator ×1

pointers ×1

templates ×1