c++ - Floyd 算法使用 (const vector<int>& t : flights), 存储在 't' 上的值是什么

标签 c++ vector

我遇到了 floyd 的这个实现,但我对“t”存储什么值有疑问,因为航类是 vector 的 vector 。 (我了解该算法的工作原理。)

//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 只是对 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]);
}

关于c++ - Floyd 算法使用 (const vector<int>& t : flights), 存储在 't' 上的值是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53271358/

相关文章:

c++ - 在 C++ 中添加一个整数和一个元组作为二维 vector 每一行的列成员

c++ - 在 cocos2d-x 上使用参数从 Object-C 到 C++ 的函数回调

c++ - 如何使用 g++ 和 CMake 指定 gcm.cache 位置

java - Java 中的单例与 C++ 中的单例

c++ - 是否需要 "nested"释放 std::vector<pair<vector<int>,int>> 中的保留内存以手动释放它?

c - 二进制矩阵 vector 乘法

c++ - 普里姆算法 : show concerned edges with summation of edges weights

c++ - 尝试在 C++ 中打开多个文件时出错

python-3.x - 使用 python 从 netcdf 绘制风向量

javascript - 三个 JS 旋转组,与 View Cube/Orientation Cube 的相机方向相同