小编Tri*_* Vu的帖子

链表析构函数

我正在研究Linked List类.每当我编译时,我都没有错误或警告.但是,可执行文件停止工作(使用Windows Dev C++).我推断出问题是我的析构函数.

我的理解是使用delete关键字为动态创建的对象调用析构函数,或者每当对象超出堆栈中对象的作用域时.

我认为我的问题发生在我的堆栈对象(Node*result)调用析构函数时,但不是很确定.

这是我的头文件:

    #ifndef Node_H
    #define Node_H

    class Node{
          int data;
          Node* next;

    public:
           Node(int data);       
           ~Node();
           void insert(int d);
           Node* remove(int d);
           void removeDups(void);
           Node* add(Node* a, Node* b);
           void printOut(void);
    };

    #endif
Run Code Online (Sandbox Code Playgroud)

重新启动.cpp文件的部分:

    #include <iostream>
    #include "Node.h"

    using namespace std;

    Node::Node(int d){
          data = d;
          next = NULL;
          }

    Node::~Node(){
           Node* n = this;
           Node* delptr;

           while(n->next != NULL){
                         delptr = n;
                         n = n->next;
                         delete delptr;
                         }
           delete n;            

        }

    void Node::insert(int d){ …
Run Code Online (Sandbox Code Playgroud)

c++ memory-leaks memory-management

1
推荐指数
1
解决办法
1856
查看次数

更改std :: pair类型会影响hashmap

最初我的代码看起来像这样:

    std::map< std::pair<int,int>, std::vector<Class0*> > aMap;
Run Code Online (Sandbox Code Playgroud)

有效.现在我的代码看起来像这样:

    std::map< std::pair<Vec3f, Vec3f>, std::vector<Class0*> > aMap;
Run Code Online (Sandbox Code Playgroud)

它不再正确映射(编译正常).为什么?我该如何解决这个问题?

编辑:这里的流行需求是3D矢量(3个浮点数)的比较代码:

    class Vec3f {
        ...

        bool operator () ( const Vector3f& v0, const Vector3f& v1 ) const {

                return std::tie(v0[0], v0[1], v0[2]) < std::tie(v1[0], v1[1], v1[2]);

    }       ...
Run Code Online (Sandbox Code Playgroud)

从这个问题重载运算符集.上面的比较适用于一组,但显然不适合一对.为什么?

c++ stl stdmap std-pair

-1
推荐指数
1
解决办法
83
查看次数

标签 统计

c++ ×2

memory-leaks ×1

memory-management ×1

std-pair ×1

stdmap ×1

stl ×1