将二维数组和向量嵌套向量传递给模板函数

4

我有这段代码:

template <typename Edge, std::size_t N, typename Visitor>
void report_edges(const Edge (&AdjacencyMatrix)[N][N], Visitor &&visitor) {
    for (size_t i = 0; i < N; ++i) {
        for (size_t j = i + 1; j < N; ++j) {
            if (AdjacencyMatrix[i][j] != Edge{}) {
                visitor(i, j);
                std::cout << i << " -<" << AdjacencyMatrix[i][j] << ">- "<< j << std::endl;
            }
        }
    }
}

它接受边缘的2D数组并将它们全部报告出来。问题是:如何重写此函数以不仅接受数组的数组,而且还接受向量的向量作为邻接矩阵参数?我认为函数必须具有相同的模板。禁止编写外部函数,例如处理迭代器。
我尝试删除std :: size_t N,并仅使用Edge模板,根本没有任何大小,但也出现了错误(在典型的2D数组情况下非常明显)。
1个回答


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接