C++ 无法取消引用插入到向量中的类对象指针
在将指针指向上述类后,将尝试弹出元素并取消引用,它在VisualC++中给我一个“访问冲突读取位置”异常。p>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
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;