Vik*_*gar 0 c++ b-tree smart-pointers
这是B+树的一个节点。我想使用智能指针,因为我的程序泄漏了大量内存。如何使用智能指针转换代码?
class node
{
public:
long* key;
int capacity;
node** nodes;
node* parent;
long* value;
node ( int order ) {
key = new long[order + 1];
value = new long[order + 1];
nodes = new node *[order + 2];
capacity = 0;
parent = NULL;
for ( int i = 0; i <= order + 1; i++ ) {
this->nodes[i] = NULL;
}
}
~node() {
delete[] key;
delete[] value;
for ( int i = 0; i <= order + 1; i++ ) {
delete nodes[i];
}
}
};
Run Code Online (Sandbox Code Playgroud)
不要使用智能指针。聪明一点,不要使用指针,而是使用容器:
#include <vector>
struct node
{
std::vector<long> keys;
std::vector<long> values;
std::vector<node *> nodes;
node * parent;
};
Run Code Online (Sandbox Code Playgroud)
根据您的结构的限制,我什至可能希望制作parent一个node &(如果父级总是先出现并且从不改变),或者也许是一个std::reference_wrapper<node>. 但这只是一个小问题。)