std::Rcpp中的RTYPE值集
std::set of RTYPE values in Rcpp
假设我想实现一个计算唯一值的函数,例如
#include <Rcpp.h>
using Rcpp::Vector;
using Rcpp::traits::is_na;
using Rcpp::IntegerVector;
template <int RTYPE>
IntegerVector nunique( const Vector<RTYPE>& x ) {
std::set<typename Rcpp::traits::storage_type<RTYPE>::type> values;
for ( int i = 0; i < x.length(); ++i ) {
if ( !is_na<RTYPE>(x[i]) )
values.insert(x[i]);
}
return IntegerVector::create(values.size());
}
然而,这不会编译并引发错误,如:
error: call of overloaded 'insert(Rcpp::Vector<19>::const_Proxy)' is ambiguous
values.insert(x[i]);
或
error: no match for 'operator<' (operand types are 'const Rcomplex' and 'const Rcomplex')
{ return __x < __y; }
有什么方法可以创建RTYPE对象的std::set
吗?或者,我如何使用此类对象的某种散列来计算唯一值?
我们在Rcpp库中有几个例子,展示了如何在运行时加载SEXP类型作为编译时RTYPE的基础上进行动态运行时切换。
编译器无法知道您调用的是整数还是数字。。。然而,您想要插入的基于R的后端需要一个类型。我认为你可以用std::变体(C++17(或它的Boost版本做你想做的事。
或者只是切换原子类型。
相关文章:
- 如何实现高效的算法来计算大型数据集的多个不同值?
- 不同于按值传递和常量引用传递的程序集
- 与位字段的并集为位字段成员提供了意外值
- std::Rcpp中的RTYPE值集
- 参数传递和返回值如何在程序集级别的 x86 上的 C/C++ 中工作?
- 通过查看程序集来比较按值传递与按引用传递性能
- C++ - 使用类中的初始值设定项列表初始化动态集
- 如何插入一组已传递给已经声明的函数的值集
- 如何在C++中找到存储在多集特定索引中的值?
- 在记录集/更新值中搜索
- 分配两个双精度值,保证产生相同的位集模式
- 设置带有布尔值的比特集的最佳方法
- 从记录集保存值
- 移动字符数组的值以注册 x86 内联程序集
- 螺纹 - 本地静态静电_int_distribution,将重新创建不同的最小值集
- OpenCV SVM::p redict() 结果集总是给出相同的最后一个值
- 为什么重载运算符不将主对象设置为值集
- 在c++中使用srand()的测试用例的新值集
- 持有唯一值集的向量,以便使用 C++ 和 OpenGL 进行颜色选择
- Boost::future和continuations -值集,但future仍然阻塞