c++ - 'std::bad_alloc' 在双端队列中插入元素时
问题描述
我做了一些调试,发现是 while 循环中的 q.push_back(nbr) 导致了错误,我不明白为什么没有分配请求的空间。请帮忙。谢谢你 。
vector<int> bfs2(int V, vector<int> adj2[])
{
int src = 0;
bool visited[V];
for (int i = 0; i < V; i++)
{
visited[i] = false;
}
deque<int> q;
q.push_back(src);
visited[src] = true;
vector<int> res;
while (q.empty() != true)
{
int top = q.front();
q.pop_front();
res.push_back(top);
vector<int> nbrsveec = adj2[top];
for (int nbr : nbrsveec)
{
if (visited[nbr] != true)
{
// cout<<nbr<<endl;
q.push_back(nbr);
visited[nbr] = true;
}
}
}
return res;
}
解决方案
bad_alloc
意味着您的内存不足。你用的是什么系统?
也许你应该定义const vector<int> & nbrsveec
以避免复制(或者直接在你的for循环中使用它)。
推荐阅读
- ios - 如何在 SwiftUI 中创建自定义形状的 TabBar
- r - str_extract_all 带十进制数字
- ansible - 多个主机提示正在工作,但执行有问题
- javascript - Vuex 4,组件中的状态为空
- botframework - 占位符在 Android 应用程序的 MS 团队消息扩展自适应卡中不可见
- macos - 我可以检查哪个应用程序打开了 .zshrc 吗?
- sql - 如何在sql查询中使用exists函数?
- google-contacts-api - 从 Google Contact/People API 获取存储使用情况?
- python - 如何填充 DataFrame 直到特定行?
- html - 如何以角度实现html5视频自定义视频进度条?