使用特征查找两个列表之间的差异
Find difference between two lists using Eigen
我想找出两个列表之间的区别。例如:
// two lists:
A = [ 0, 1, 2, 3, 4, 5, 6 ];
B = [ 1, 4, 5 ];
// difference between the lists:
C = [ 0, 2, 3, 6 ];
我使用C++的 STL 库完成此操作,如下所示:
#include <iostream>
#include <vector>
int main()
{
std::vector<size_t> A = {0, 1, 2, 3, 4, 5, 6};
std::vector<size_t> B = {1, 4, 5};
std::vector<size_t> C;
std::set_difference(A.begin(),A.end(), B.begin(),B.end(), std::inserter(C,C.begin()));
return 0;
}
但是,由于我的应用程序主要使用特征,所以我现在也想使用特征来执行此操作。我在文档中或在线都找不到我要查找的内容。
请注意,我特别想避免编写自己的函数。
你来了:
#include <iostream>
#include <Eigen/Dense>
int main()
{
using namespace Eigen;
VectorXd a(3), b(1);
VectorXd c(a.size());
a << 1,2,3;
b << 1;
auto it = std::set_difference(a.data(), a.data() + a.size(),
b.data(), b.data() + b.size(),
c.data());
c.conservativeResize(std::distance(c.data(), it)); // resize the result
std::cout << c;
}
这里的关键是使用Eigen::VectorXd::data()
成员函数,该函数返回指向底层存储的指针,该指针本身是一个迭代器,可以传递到C++标准库函数。
相关文章:
- 测试两个类型列表中的所有组合
- 创建一个棋盘格或"Interweave"两个链接列表。IE 更改两个链表的指针
- C++声明双链表,使用两个 for 循环双向遍历列表并打印
- 为什么在排序链表上的这种合并实现总是将两个列表都设置为 NULL,而只有一个应该设置一个列表?
- 我如何创建一个列表,然后从中创建两个列表,其中一个用于偶数,另一个用于奇数?
- C++如果两个模板函数都与参数列表匹配,将调用哪个模板
- 如何在两个列表中比较和获取非包含值
- 如何在构造器的成员初始值设定项列表中调用两个函数?
- 将两个列表合并为一个蛇形列表
- C++ 分段错误:11 错误,同时编码将两个数字相加的链接列表
- 使用特征查找两个列表之间的差异
- 如何在这两个分类的链接列表之间获得开关的位置
- 如何合并两个双重链接列表(访问下一个链接)
- 通过单词列表将两个字符串移动以比较每个单词
- 添加一个节点,并在通用树中的两个给定节点之间找到路径成本,其中c 中的儿童列表
- 如何比较C 列表中的两个连续元素
- 两个排序的链接列表C 的交点
- 如何在两个包含指针的地图中创建列表
- 合并两个单链接列表以形成第三个列表的功能
- 两个单链列表共享同一个节点和析构函数两次删除相同的内存