[英]Problem in accessing vectors of list in c++
我正在尝试表示一个图表,其中
边缘:
struct edge{
char a;
char b;
int weight;
}
我正在尝试在此数据结构中添加我的图表:
vector<list<edge*>> graph;
在 AddEdge function 中,我在尝试在向量的第 i 个索引中添加列表时遇到 memory 访问冲突
void Graph::addEdge(char start, char end, int weight)
{
int i = node_number(start); //returns index (e.g 0 if start == 'A')
int j = node_number(end);
Edge *s= new Edge (start, end, weight);
Edge* e=new Edge (end, start, weight);
graph[i].push_back(s); //memory violation
graph[j].push_back(e);
}
现在有人帮我在我的graph
中添加边。 谢谢!
编辑:
我进行了调试,在 push_back() 部分 i 和 j 的值分别为 0 和 1。 调试器返回 abort: memory 违规回溯是:
public:
_NODISCARD _Ty& operator[](const size_type _Pos)
{ // subscript mutable sequence
#if _ITERATOR_DEBUG_LEVEL != 0
_STL_VERIFY(_Pos < size(), "vector subscript out of range");
#endif /* _ITERATOR_DEBUG_LEVEL != 0 */
return (this->_Myfirst()[_Pos]);
}
问题在于向量的大小,因为下面的初始化分配 size=0
vector<list<edge*>> graph;
我已经通过在推送之前调整图形向量的大小来修复代码。 另一种解决方案是通过
vector<list<edge*>> graph(20);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.