c++ - 向量不是“保存值”C++
问题描述
从向量中读取时,我将值放入我的大小为零。我有:
class Graph {
public:
vector<Vertex> vertices;
};
class Vertex {
public:
vector<int> adjacentVertices;
};
然后在我的加载方法中:
int vertices, edges;
cin >> vertices >> edges;
Graph mainGraph;
mainGraph.vertices.reserve(static_cast<unsigned int>(vertices));
int tmp1, tmp2;
for (int i = 0; i < edges; i++) {
cin >> tmp1 >> tmp2;
mainGraph.vertices[tmp1].adjacentVertices.push_back(tmp2);
cout << mainGraph.vertices[tmp1].adjacentVertices.size(); //PRINTS NUMBERS -> SEEMS OKAY
}
cout << mainGraph.vertices.size(); //IS ZERO???
for(const Vertex &v : mainGraph.vertices){ //CRASHES
cout << v.adjacentVertices.size();
}
我敢打赌这很愚蠢,但我错过了什么?如果不需要特殊的构造函数,我读到向量将在使用时自行构造。
解决方案
推荐阅读
- android - 在 Android 中,使用 Webdriverio,如何通过资源 ID 选择元素?
- javascript - AngularJs 清理和显示 html
- javascript - 从 Firebase Cloud 函数中移除百分比编码
- android - 我们真的需要在 Kotlin 中避免使用 Fragments 和 Activites 的默认值的构造函数吗?
- batch-file - 如何删除文件夹中最旧的文件?
- c# - Xamarin 自定义地图引脚渲染器
- c++ - 这些外部类型定义在 C++ 中工作需要什么?
- java - 如何使用 Intent() 从我的应用程序共享 .apk 文件
- docker - Openshift(oc)登录注册表一直失败 - 如何启动 Docker 守护进程?
- c# - 怎么了?下拉列表 Asp.Net Mvc C#