一对向量的大小
Size of a vector of pairs
本文关键字:向量 更新时间:2023-10-16
我正在填充一个向量的邻接表,其对由:
vector<pair<int, int>> adj[1000];
我正在做一个深度第一搜索列表,但遇到一些奇怪的行为。第一个print语句打印一些值,这意味着我在adj[s][0], adj[s][1], adj[s][2]中有一些项,以此类推。然而,当我在下一行计算adj[s]的大小时,它打印出来的结果是零。我错过什么了吗?我对向量对的定义是正确的吗?邻接表是正确填充的,因为当我在dfs中运行cout << adj[s][0].first << endl;
时,它正确地显示了每个节点的邻居。
完整代码
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <utility>
#include <climits>
#include <algorithm>
using namespace std;
vector<pair<int, int>> adj[1000];
bool visited[1000];
int nodeweight[1000];
void initialize()
{
for(int i = 0; i < 1000; i++)
visited[i] = false;
for(int i=0; i < 1000; i++)
adj[i].clear();
for(int i = 0; i <1000; i++)
nodeweight[i] = INT_MAX;
}
void dfs(int s)
{
visited[s] = true;
cout << adj[s][1].first << endl;
int minimum = INT_MAX, tovisit = 0;
for(int i = 0; i < adj[s].size(); i++)
{
cout << adj[s][i].second;
if(!visited[adj[s][i].first] && adj[s][i].second < minimum)
{
minimum = adj[s][i].second;
tovisit = adj[s][i].first;
}
}
nodeweight[tovisit] = minimum;
//dfs(tovisit);
}
int main() {
int N, E;
cin >> N >> E;
while(E--)
{
int i, j, w;
cin >> i >> j >> w;
adj[i].push_back(make_pair(j,w));
adj[j].push_back(make_pair(i,w));
}
initialize();
for(int i = 1; i <= N; i++)
{
dfs(i);
}
return 0;
}
填写完initialize()
后再次清空adj
首先在main
的while
循环中填充adj
。然后调用initialize()
,它包括这个循环,清除其中所有的向量:
for(int i=0; i < 1000; i++)
adj[i].clear();
然后你在dfs
中有cout << adj[s][1].first << endl;
,这是未定义的行为,因为adj[s]
中没有元素。事实上,你似乎得到正确的结果只是巧合的未定义的行为(虽然实际是因为保存向量数据的内存没有被清除。)
adj[s].size()
被正确地报告为0
相关文章:
- 写入向量<向量<bool>>
- 函数向量_指针有不同的原型,我可以构建一个吗
- std::向量与传递值的动态数组
- 将值指定给向量(2D)的向量中的某个位置
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 如何使用向量的template_back函数
- 尝试通过多个向量访问变量时,向量下标超出范围
- 如何通过派生类函数更改基类中的向量
- C++从另一个类访问公共静态向量的正确方法是什么
- 如何将ampl中的集合表示为c++中的向量
- 变量没有改变?通过向量的函数调用
- 迭代时从向量和内存中删除对象
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 计算排序向量的向量中唯一值的计数
- 矩阵向量乘法(cublasDgemv)返回零
- 一对向量构造函数:初始值设定项列表与显式构造
- 将结构向量排序为子组
- 在C++中调整向量中的索引
- 向量元素的引用地址与它所指向的向量元素的地址不同.为什么