我的代码中的向量超出范围错误。我该怎么做才能阻止错误?我已经检查了很多论坛。
我已经做过一些基本试验,看是否还有其他问题。从0开始。再次从头开始编写代码。使用了其他IDE。
#include <iostream>
#include <vector>
#include "graph.h"
using namespace std;
graph::graph() {
count = 0;
}
void graph::addVertex(const Node node) {
vertices.push_back(node);
count++;
}
void graph::addEdge(const char from, const char to) {
vertices[from].edges.push_back(to);
vertices[to].edges.push_back(from);
}
void graph::print() {
unsigned int i = 0;
while (i < vertices.size()) {
cout << vertices[i].name << "->";
if (vertices[i].edges.size() > 0)
for (unsigned int j = 0; j < vertices[i].edges.size(); j++)
cout << vertices[i].edges[j];
cout << endl;
i++;
}
结果总是使我进入矢量文件的1733行,我不确定在修复错误后是否还会出现更多错误。
答案 0 :(得分:0)
谢谢大家的响应,尤其是@ user4581301,我弄乱了它,并且用addEdge函数的这种替换输出了所需的输出。
void graph::addEdge(const char from, const char to) {
if (vertices.size() == 0)
return;
for (int i = 0; i < vertices.size(); i++) {
if (vertices[i].name == from)
vertices[i].edges.push_back(to);
if (vertices[i].name == to)
vertices[i].edges.push_back(from);
}
}