C++ 无法取消引用插入到向量中的类对象指针

C++ 无法取消引用插入到向量中的类对象指针,c++,class,pointers,vector,C++,Class,Pointers,Vector,在将指针指向上述类后,将尝试弹出元素并取消引用,它在VisualC++中给我一个“访问冲突读取位置”异常。p> struct Tree_Node { typedef int node_value_type; Tree_Node(node_value_type key) : value(key) {} public: node_value_type value = 0; Tree_Node* right = nullptr; Tree_Node* lef

在将指针指向上述类后,将尝试弹出元素并取消引用,它在VisualC++中给我一个“访问冲突读取位置”异常。p>
struct Tree_Node
{
    typedef int node_value_type;

    Tree_Node(node_value_type key) : value(key) {}

public:
    node_value_type value = 0;
    Tree_Node* right = nullptr;
    Tree_Node* left = nullptr;
};
向量节点列表(2);
树节点*node1=新树节点(5);
节点列表。推回(节点1);
库特值;
但是,以下方法可以很好地工作:

vector<Tree_Node*> node_list(2);

Tree_Node* node1 = new Tree_Node(5);

node_list.push_back(node1);

cout << node_list.front()->value;
Tree_Node*node2=node1;
库特值
它插入了第三个元素

node_list.push_back(node1);
cout值;
它尝试访问第一个指针,它是一个空指针


要保留空间而不插入图元,请使用:

cout << node_list.front()->value;
向量节点列表;
节点_列表。保留(2);
但我几乎可以肯定,默认ctor为2个以上的元素保留了位置

您还可以更新两个分配的元素:

vector<Tree_Node*> node_list;
node_list.reserve(2);
向量节点列表(2);
节点_列表[0]=节点1;
节点\列表[1]=节点2;

如果您想确保容器只包含两个元素,请使用
std::pair
或(如果可以使用C++11)使用
std::array

My bad,那一定是它。我明确指定大小的原因是因为我想限制默认的分配大小。基本上,我想要一个两个元素的空向量,我可以向其中添加两个指针。你觉得什么是最好的解决办法?
cout << node_list.front()->value;
vector<Tree_Node*> node_list;
node_list.reserve(2);
vector<Tree_Node*> node_list(2);
node_list[0] = node1;
node_list[1] = node2;