c++ - 用 (const vector) 实现的 Floyd 算法& t : 航班), 't' 上存储的值是什么
问题描述
我遇到了弗洛伊德的这种实现,但我有一个问题,即“t”将什么存储为值,因为航班是向量的向量。(我了解算法的工作原理。)
//vector<vector<int>>& flights
//vector<vector<int>> vec(n, vector<int>(k + 1));
for (int i = 1; i <= k; i++)
{
for (int j = 0; j < n; j++)
{
vec[j][i] = vec[j][i - 1];
for (const vector<int>& t : flights)
{
vec[t[1]][i] = min(vec[t[1]][i], vec[t[0]][i - 1] + t[2]);
}
}
}
解决方案
此语法是基于范围的循环,在 C++11 中引入。在这里,t
只是对 的元素的 const 引用flights
。循环会flights
按顺序访问每个元素,你可以使用标识符t
来引用当前元素。
该循环大致相当于以下 C++11 之前的语法:
for(std::vector<std::vector<int>>::const_iterator it = flights.begin(); it != flights.end(); ++it)
{
const vector<int>& t = *it;
vec[t[1]][i] = min(vec[t[1]][i], vec[t[0]][i - 1] + t[2]);
}
推荐阅读
- javascript - 如何使用带有 useState 钩子的 React Context 来共享来自不同组件的状态?
- javascript - Javascript拼接和推入for循环多次添加项目
- angular - 有没有办法使用自定义验证器以反应形式以角度验证当前密码
- react-native - rn-fetch-blob 自动请求存储
- centos - centos中docker rpm的源代码在哪里可以找到?
- java - 使用Java从Excel读取数据时如何仅提取整数值而不是Double值
- java - 我需要通过使用 servlet 检查数据库中的数据来显示 JSP 页面中给出的输入是否有效
- java - 如何使用重用会话连接到 FTPS 服务器?
- javascript - 如何在laravel中将值从javascript传递到html?
- decodable - 从符合可解码协议的类派生的类产生编译器错误“类'CardListResponse'没有初始值设定项”