gpt4 book ai didi

c++ - 可排序的 std::initializer_list

转载 作者:行者123 更新时间:2023-11-30 01:55:50 25 4
gpt4 key购买 nike

我想std::sort一个std::initializer_list;

  real_t median(const std::initializer_list<real_t> vars) {
const unsigned x = vars.size() / 2;
// std::sort(vars.begin(), vars.end());
if (x & 1) {
return *(vars.begin() + x);
}
return (*(vars.begin() + x) + *(vars.begin() + x + 1)) * 0.5;
}

这给出了一个模糊的错误,我预测这是因为列表的内部元素是 const &,因此它们不能被排序。

对于 堆栈 上将使用 -pedantic 编译的可变列表,我有什么替代方案?

我正在使用 C++11。模板不是最佳的,除非它们可以针对所有参数组合进行前向实例化,或者我可以extern的范围很小。

最佳答案

std::initializer_list (const 和 not)不能是 std::sort编辑。那是因为它的迭代器是只读的(它的迭代器类型是 const T*,一个指向 const T 的指针)。

要使您的函数起作用,您必须使用满足 std::sort 要求的容器。最好的容器可能是 std::vector .

real_t median(std::vector<real_t> vars) {  // Without the const

如果你想要一个基于堆栈(固定大小)的容器,那么你可以使用 std::array ,这也是 std::sortable。

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

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