c++ - 来自二维数组的特征图
问题描述
为什么这行得通
typedef Matrix<double, N, N, RowMajor> Mat;
cout << Map<Mat>(&m[0][0]) << endl;
但这不是
cout << Map<Matrix<double, N, N, RowMajor>>(&m[0][0]) << endl;
是否有可能在一行中完成所有事情?
错误是:
eigen_playground.cpp:16:46: warning: use of right-shift operator ('>>') in template argument will require parentheses in
C++11 [-Wc++11-compat]
cout << Map<Matrix<double, N, N, RowMajor>>(&m[0][0]) << endl;
^
( )
eigen_playground.cpp:16:46: error: invalid operands to binary expression ('int' and 'double *')
cout << Map<Matrix<double, N, N, RowMajor>>(&m[0][0]) << endl;
~~~~~~~~^ ~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:740:1: note:
candidate template ignored: could not match 'basic_istream<type-parameter-0-0, type-parameter-0-1>' against
'Eigen::StorageOptions'
operator>>(basic_istream<_CharT, _Traits>& __is, _CharT* __s)
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:789:1: note:
candidate template ignored: could not match 'basic_istream<char, type-parameter-0-0>' against 'Eigen::StorageOptions'
operator>>(basic_istream<char, _Traits>& __is, unsigned char* __s)
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:797:1: note:
candidate template ignored: could not match 'basic_istream<char, type-parameter-0-0>' against 'Eigen::StorageOptions'
operator>>(basic_istream<char, _Traits>& __is, signed char* __s)
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:804:1: note:
candidate template ignored: could not match 'basic_istream<type-parameter-0-0, type-parameter-0-1>' against
'Eigen::StorageOptions'
operator>>(basic_istream<_CharT, _Traits>& __is, _CharT& __c)
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:832:1: note:
candidate template ignored: could not match 'basic_istream<char, type-parameter-0-0>' against 'Eigen::StorageOptions'
operator>>(basic_istream<char, _Traits>& __is, unsigned char& __c)
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:840:1: note:
candidate template ignored: could not match 'basic_istream<char, type-parameter-0-0>' against 'Eigen::StorageOptions'
operator>>(basic_istream<char, _Traits>& __is, signed char& __c)
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:1506:1: note:
candidate template ignored: could not match 'basic_istream<type-parameter-0-0, type-parameter-0-1>' against
'Eigen::StorageOptions'
operator>>(basic_istream<_CharT, _Traits>& __is,
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:1638:1: note:
candidate template ignored: could not match 'basic_istream<type-parameter-0-0, type-parameter-0-1>' against
'Eigen::StorageOptions'
operator>>(basic_istream<_CharT, _Traits>& __is, bitset<_Size>& __x)
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/complex:1369:1: note:
candidate template ignored: could not match 'basic_istream<type-parameter-0-1, type-parameter-0-2>' against
'Eigen::StorageOptions'
operator>>(basic_istream<_CharT, _Traits>& __is, complex<_Tp>& __x)
^
eigen_playground.cpp:16:66: error: expected a type
cout << Map<Matrix<double, N, N, RowMajor>>(&m[0][0]) << endl;
^
1 warning and 2 errors generated.
解决方案
您收到错误的原因是因为在 C++11 之前,两个相邻的字符 " >>
" 被积极地解释为右移运算符。
由于您使用的是早于 C++11 的 C++ 标准,因此只需在这两个字符之间添加一个空格。
cout << Map< Matrix<double, N, N, RowMajor> >(&m[0][0]) << endl;
// right here. ^
推荐阅读
- python - 最小化目标函数返回与输出相同的初始输入
- android - Android/Ionic Bug:SplashScreen 之前的灰屏 - 如何删除?
- awk - SED、GREP、AWK、正则表达式不显示两个模式之间的内容包含并匹配第二个出现模式中的字符串
- amazon-web-services - EC2 和 RDS 的预留实例限制
- macos - 如何在 Mac 上的 Pages 文稿中插入代码块?
- kml - 无法在谷歌地球中可视化大型 kml 文件
- java - Apache Storm:一个集群可以创建多少个拓扑?
- javascript - 如何从javascript中的函数返回值?
- sqlalchemy - 当父对象已经存在时,使用 SQLAlchemy 插入带有父对象的子对象
- performance - 减少 AWS CloudWatch 代理 CPU 使用率