如何在C++中正确返回模板对象
How to make proper return of templated object in C++?
在此代码中,create_matrix
返回Matrix<int, 2, 3>
类型:
#include <array>
#include <iostream>
using namespace std;
template <class T, size_t ROW, size_t COL>
using Matrix = array<array<T, COL>, ROW>;
Matrix<int, 2, 3> create_matrix(int x, int y){
Matrix<int, 2, 3> arr;
arr[0][0] = 42;
return arr;
}
int main(int argc, char *argv[])
{
auto arr = create_matrix(2,3);
cout << arr[0][0];
return 0;
}
是否可以返回Matrix<int, x, y>
类型?
std::array的模板参数必须在编译时已知(在编译时为已知的文字值、const值或constexpr值)
因此,在这种情况下,不可能在运行时返回x和y传递的矩阵。
要获得这种类型的功能,您可能需要用std::vector或某种类似的动态数组类型的对象替换std:。
它看起来像XY问题。
你可以用vector<vector<int>>
拼凑出一个2D"矩阵",但这有点像把轮子重新变成六边形(意思是:性能极差)。
我建议你试试线性代数库,例如Armadillo或Eigen。
相关文章:
- 如何返回对象C++的数组
- 如何使用std::min和std::less返回对象
- 如何通过引用返回对象
- 如何安全地从 DLL 调用返回对象
- 如何在不销毁对象的情况下返回对象列表
- 什么更好?返回对象指针列表?或返回指向对象列表的指针?
- 使用返回对象的函数处理错误
- 何时返回指针与返回对象的一般经验法则?
- 如何使用运算符+重载函数正确返回对象?
- C++,class,一个返回对象的函数
- 运算符的返回对象 = C++ 中的重载
- 从队列返回对象的最快方法,但前提是队列有它
- 如何使用条件表达式返回对象指针?
- 使用构造函数从函数返回对象
- 隐式转换函数的返回对象时是否会影响性能?
- 返回对象时从'const DList<int>* const'到 'DList<int>*' [-fallowive] 的转换无效
- 按值和堆栈大小限制返回对象
- 我应该如何从函数返回对象?
- c++:何时传递指针与返回对象
- 返回对象会丢失属性