我遇到了這個問題,並且想知道它的原因是什麼。C++中結構體與對象屬性和std :: vector的交互
我的代碼如下:
struct node{
bool leaf;
std::string label;
};
//in main
std::vector<node> graph;
graph.reserve(5);
現在,如果我嘗試分配 graph[3].leaf = true;
, 一切順利。
但是,如果我嘗試做同樣的對象類型,如 graphA[i].label = "01";
, 我得到一個分段錯誤。
如果我改變代碼
struct node{
bool leaf;
std::string * label;
};
而且分配的內存在載體node
每個實例的字符串,我現在可以分配一個值graphA[i]->label
沒有問題。
這是爲什麼?任何迴應將不勝感激。
'graph.reserve(5);'=>'graph.resize(5);'應該修復它。你不需要一個指針和'new'。 –
嘗試'graph.at(3)'得到一個更好的錯誤信息 – user463035818
'reserve'只保留,你的向量仍然有零個元素 – user463035818