gpt4 book ai didi

C++ 崩溃 :push_back on nested vectors

转载 作者:行者123 更新时间:2023-11-30 01:10:25 24 4
gpt4 key购买 nike

#include <iostream>
#include <vector>

using namespace std;

struct Neighbor
{
int index;
int weight;
Neighbor(int, int);
};

Neighbor::Neighbor(int index, int weight)
{
Neighbor::index = index;
Neighbor::weight = weight;
}

void addEdge(vector<vector<Neighbor> > &graph, int v1, int v2, int weight)
{
graph[v1].push_back(Neighbor(v2, weight));
graph[v2].push_back(Neighbor(v1, weight));
}

int main()
{
vector<vector<Neighbor> > graph;
vector<vector<Neighbor> > graphIterator;
graph[0].push_back(Neighbor(1, 5));
graph[0].push_back(Neighbor(3, 3));
graph[0].push_back(Neighbor(4, 2.5));

graph[1].push_back(Neighbor(0, 5));
graph[1].push_back(Neighbor(2, 3));

graph[2].push_back(Neighbor(1, 3));
graph[2].push_back(Neighbor(4, 2.5));
graph[2].push_back(Neighbor(3, 5));

graph[3].push_back(Neighbor(0, 3));
graph[3].push_back(Neighbor(2, 5));
graph[3].push_back(Neighbor(4, 2.5));

graph[4].push_back(Neighbor(0, 2.5));
graph[4].push_back(Neighbor(2, 2.5));
graph[4].push_back(Neighbor(3, 2.5));

return 0;
}

上面是我的代码,运行时似乎崩溃了。虽然声明 vector 图似乎工作正常,但即使我包含第一个 push_back 语句,程序也会崩溃。有人可以给我建议吗?

最佳答案

graph[0].push_back(Neighbor(1, 5)); 时,graph 仍然是空的,它没有元素并且 graph[0 ] 导致 UB。

你应该先添加元素,比如:

graph.push_back(vector<Neighbor>()); // add one element
...

vector<vector<Neighbor> > graph(5); // construct vector with 5 elements

vector<vector<Neighbor> > graph;
graph.resize(5); // resize vector to contain 5 elements.

关于C++ 崩溃 :push_back on nested vectors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37802643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com