如何比较两个动态数组并检查哪些元素匹配
How do I compare two dynamic arrays and check which elements match?
我想比较两个矩阵的元素,如果该位置中的元素匹配,则返回包含1
的矩阵,否则返回0
。我创建了一个简单的测试函数:
template <class A, class B>
void func(const A& a, const B& b)
{
auto c = (b.array() == a.array()).cast<int>();
std::cout << c;
}
所以我写了一个main
函数来测试它:
int main()
{
Eigen::Array<int,Eigen::Dynamic,Eigen::Dynamic> b;
b.resize(2,2);
b.fill(2);
auto a = b;
a(0,0) = 1;
a(0,1) = 2;
a(1,0) = 3;
a(1,1) = 4;
func(a,b);
return 0;
}
但是我一直得到这个错误:
eigenOperations.cpp: In function ‘void func(const A&, const B&)’:
eigenOperations.cpp:8:24: error: expected primary-expression before
‘int’ auto c = temp.cast<int>();
eigenOperations.cpp:8:24: error: expected ‘,’ or ‘;’ before ‘int’ make: *** [eigenOperations] Error 1
我在这里做错了什么?
不管是谁把这个标记为重复的都是对的。出现这个问题是因为我没有完全理解c++的template
关键字。
在哪里以及为什么我必须把"template"answers";typename"关键字?
将函数替换为以下内容可以修复问题:
template <class A, class B>
void func(const A& a, const B& b)
{
auto c = (b.array() == a.array()).template cast<int>();
std::cout << c;
}
相关文章:
- 检查 2D 网格的某个元素是否与另一个元素共享对角线、水平线或垂直线
- 检查 TinyXML 中的元素是否存在
- 程序来检查两个数组的相似元素
- 如何检查映射值中是否存在元素
- 如何使用谷歌测试检查两个枚举类元素的相等性?
- 有没有办法搜索向量的元素,<String>然后检查它是否包含特定的字符,如果它确实打印了它
- 检查HTML 5视频元素是否正在获取帧
- 是否有更有效的方法来检查元素是否在给定的区间内
- 检查元素是否存在于二维矢量中
- C++如何编写一个函数来检查元素是否存在于动态分配的数组中
- 检查元素是否存在
- 如何检查元素是否存在于 c++ 中的链表中
- C 检查元素是否为std :: vector
- 如何检查元素是否在由结构组成的向量中
- 检查元素是否在两个向量中的最快方法
- 检查元素是否存在于映射中的映射中
- 检查元素是否在 std::initializer_list 中
- 如何检查元素是否在C++的映射键中
- 检查元素是否在列表中(包含)
- 如何检查元素是否存在于SparseMat