c++ - 如何共享运营商返回的数据
问题描述
您好我目前正在尝试为矩阵实现模板库,因此我正在实现一些操作,例如 transpose() 操作。
我还希望运算符返回的矩阵(如转置)与原始矩阵共享数据。
例子:
matrix <int> x(3,3);
x.transpose() [2][1] = 42;
那么如果我读x[1][2]
必须是42
。
我可以从哪里开始的任何想法?
提前致谢
解决方案
大致如下:
template<class Matrix>
struct Transposed
{
Transposed(Matrix& matrix) : matrix_(matrix)
{ }
decltype(auto) operator()(int row, int col)
{
return matrix_(col, row);
}
Matrix& matrix_;
};
template<typename T>
struct Matrix
{
auto transposed()
{
return Transposed<Matrix>{*this};
}
...
};
如果您从头开始实现矩阵,我不明白为什么[i][j]
应该首选(i, j)
更容易实现的语法。
推荐阅读
- xampp - 本地主机上奇怪的 HTML 加载行为 - Xampp
- javascript - 强制不受支持的浏览器忽略 VIBRATION API 方法
- android - WebView 页面不会在 Xamarin 表单中加载 url
- amazon-web-services - 如何使用 AppSync 解决父子关系
- reactjs - 从子组件调用父函数不起作用
- crystal-lang - 在初始化程序中分配的实例变量被错误地推断为 nilable
- selenium - 如何修复 org.openqa.selenium.WebDriverException:更新 selenium 库后
- java - 如何创建正则表达式以匹配特定模式的单词
- sql-server - 组合多个xml标签
- python - 绘制两个回归特征时出现奇怪的散点图循环