gpt4 book ai didi

c++ - Rcpp降序排序

转载 作者:搜寻专家 更新时间:2023-10-31 01:34:47 24 4
gpt4 key购买 nike

我无法使用 Rcpp 降序排序

升序排列:

NumericVector sortIt(NumericVector v){
std::sort(v.begin(), v.end());
return v;
}

尝试按降序排序:

NumericVector sortIt(NumericVector v){
std::sort(v.begin(), v.end(), std::greater<int>()); // does not work returns ascending
return v;
}

NumericVector sortIt(NumericVector v){
std::sort(numbers.rbegin(), numbers.rend()); // errors
return v;
}

最佳答案

此功能已成为 added (Rcpp 版本 >= 0.12.7) 到 Vector 成员函数 sort。这对于排序 CharacterVector 对象特别必要(升序或降序),因为底层元素类型需要特殊处理,并且与 std::sort + 不兼容std::greater(以及某些其他 STL 算法)。

#include <Rcpp.h>

// [[Rcpp::export]]
Rcpp::CharacterVector char_sort(Rcpp::CharacterVector x) {
Rcpp::CharacterVector res = Rcpp::clone(x);
res.sort(true);
return res;
}

// [[Rcpp::export]]
Rcpp::NumericVector dbl_sort(Rcpp::NumericVector x) {
Rcpp::NumericVector res = Rcpp::clone(x);
res.sort(true);
return res;
}

注意使用 clone 来避免修改输入 vector 。


char_sort(c("a", "c", "b", "d"))
# [1] "d" "c" "b" "a"

dbl_sort(rnorm(5))
# [1] 0.8822381 0.7735230 0.3879146 -0.1125308 -0.1929413

关于c++ - Rcpp降序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38654019/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com