gpt4 book ai didi

c++ - 如何使用现代 C++ 转置二维 vector ?

转载 作者:太空狗 更新时间:2023-10-29 21:33:46 26 4
gpt4 key购买 nike

假设我有一个矩阵定义为:

vector<vector<T>> matrix;

例如,在转置之前:

{{1, 2},
{3, 4}}

转置后:

{{1, 3},
{2, 4}}

根据要求采用朴素的 for 循环解决方案:

    for(i = 0; i < rowSize; ++i){
for(j = 0; j < colSize; ++j)
{
transposed[j][i]=original[i][j];
}
}

我想知道在 C++ 中对其进行转置的现代方法是什么?一个天真的解决方案是使用两个 for 循环,这不是我想要的。我正在考虑使用 for_eachstd::transform。有人可以提出一些建议吗?谢谢!

最佳答案

一如既往,这完全取决于您的需求。我能想到的最简单的解决方案是根本不修改数据。相反,您可以提供一个包装器来交换索引以进行访问。不保证完整性或正确性(而是保证不完整并且可能有拼写错误,但我希望你明白这个想法):

template <typename T>
struct transposed_ref {
T& t;
transposed_ref(T& t) : t(t) {}
T::value_type& get(int x,int y) { return T[y][x]; }
}; // ^ ^ --- note: swapped indices

关于c++ - 如何使用现代 C++ 转置二维 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49998284/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com