社区讨论

关于map

学术版参与者 4已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@mhk7lm64
此快照首次捕获于
2025/11/04 14:49
4 个月前
此快照最后确认于
2025/11/04 14:49
4 个月前
查看原帖
为啥判定一个数是否存在必须用count,直接访问会错啊
e.g.
CPP
map <int, bool> maps[N];
maps[x][y] = 1;
对于这个东西,执行maps[x].count (y)maps[x][y]得到的结果有时候不一样啊
下面是我遇到问题的完整函数
CPP
void dijkstra ()
{
	while (!q.empty ())
	{
		int u = q.top ().u, dis = q.top ().dis, f = q.top ().from;
		q.pop ();
		if (vis[u].size () >= k || vis[u].count (f)) continue;
		vis[u][f] = 1;
		for (int i = 0; i < (int) g[u].size (); i++)
		{
			int v = g[u][i].first, w = g[u][i].second;
			if (w + dis <= r && vis[v].size () < k && !vis[v].count (f)) {q.push (node {v, w + dis, f});}
		}
	}
}
CPP
void dijkstra ()
{
	while (!q.empty ())
	{
		int u = q.top ().u, dis = q.top ().dis, f = q.top ().from;
		q.pop ();
		if (vis[u].size () >= k || vis[u][f]) continue;
		vis[u][f] = 1;
		for (int i = 0; i < (int) g[u].size (); i++)
		{
			int v = g[u][i].first, w = g[u][i].second;
			if (w + dis <= r && vis[v].size () < k && !vis[v][f]) {q.push (node {v, w + dis, f});}
		}
	}
}
这两个代码为什么效果不一样啊

回复

5 条回复,欢迎继续交流。

正在加载回复...