我有一个整数向量,例如c(1,2,0,3,4),我希望0成为分隔符并得到list(c(1,2), c(3,4)).我可以使用任何库函数吗?
对于浮点精度的问题,我为浮点数定义了自定义比较函数:
bool cmp(double a, double b)
{
if(abs(a - b) <= eps) return false;
return a < b;
}
Run Code Online (Sandbox Code Playgroud)
然后我在一些浮点数上调用sort.我听说一些不好的比较函数会导致排序错误.我只是想知道它能cmp正常排序吗?一方面,cmp满足了关联规则.但另一方面,cmp(x - eps, x) == false&& cmp(x, x + eps) == false并不意味着cmp(x - eps, x + eps) == false.
我没有直接在浮动数字上使用sort,因为我想要排序的是pair<double, double>.例如:
(1,2), (2,1), (2.000000001, 0)
Run Code Online (Sandbox Code Playgroud)
我想将2和2.000000001视为相同,并期望结果如下:
(1,2), (2.000000001, 0), (2,1)
Run Code Online (Sandbox Code Playgroud) 在下面的示例中,RCPP_MODULE除了clone使编译失败的方法外,我可以毫无困难地将一些正常的c ++方法导出到R中.
struct C
{
void clone(C* other)
{
*this = *other;
}
};
#include <Rcpp.h>
using namespace Rcpp;
RCPP_MODULE(mod){
class_<C>("C")
.method("clone", &C::clone)
;
};
Run Code Online (Sandbox Code Playgroud)
如何导出clone方法,以便我可以引用在R中创建的其他C++类?