<legend id='i5gY8'><style id='i5gY8'><dir id='i5gY8'><q id='i5gY8'></q></dir></style></legend>

      <i id='i5gY8'><tr id='i5gY8'><dt id='i5gY8'><q id='i5gY8'><span id='i5gY8'><b id='i5gY8'><form id='i5gY8'><ins id='i5gY8'></ins><ul id='i5gY8'></ul><sub id='i5gY8'></sub></form><legend id='i5gY8'></legend><bdo id='i5gY8'><pre id='i5gY8'><center id='i5gY8'></center></pre></bdo></b><th id='i5gY8'></th></span></q></dt></tr></i><div id='i5gY8'><tfoot id='i5gY8'></tfoot><dl id='i5gY8'><fieldset id='i5gY8'></fieldset></dl></div>
        <bdo id='i5gY8'></bdo><ul id='i5gY8'></ul>
    1. <small id='i5gY8'></small><noframes id='i5gY8'>

      <tfoot id='i5gY8'></tfoot>

    2. 使用 STL 容器进行中值计算时,正确的方法是什么?

      时间:2024-05-11

      <small id='Lx2Zu'></small><noframes id='Lx2Zu'>

      <legend id='Lx2Zu'><style id='Lx2Zu'><dir id='Lx2Zu'><q id='Lx2Zu'></q></dir></style></legend>
        <tbody id='Lx2Zu'></tbody>
      <i id='Lx2Zu'><tr id='Lx2Zu'><dt id='Lx2Zu'><q id='Lx2Zu'><span id='Lx2Zu'><b id='Lx2Zu'><form id='Lx2Zu'><ins id='Lx2Zu'></ins><ul id='Lx2Zu'></ul><sub id='Lx2Zu'></sub></form><legend id='Lx2Zu'></legend><bdo id='Lx2Zu'><pre id='Lx2Zu'><center id='Lx2Zu'></center></pre></bdo></b><th id='Lx2Zu'></th></span></q></dt></tr></i><div id='Lx2Zu'><tfoot id='Lx2Zu'></tfoot><dl id='Lx2Zu'><fieldset id='Lx2Zu'></fieldset></dl></div>
          • <bdo id='Lx2Zu'></bdo><ul id='Lx2Zu'></ul>

            1. <tfoot id='Lx2Zu'></tfoot>

              • 本文介绍了使用 STL 容器进行中值计算时,正确的方法是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                问题描述

                假设我需要从 1000000 个随机数值序列中检索中位数.

                Let's say I need to retrieve the median from a sequence of 1000000 random numeric values.

                如果使用任何 std::list,我没有(内置)方法来对序列进行排序以进行中位数计算.

                If using anything but std::list, I have no (built-in) way to sort sequence for median calculation.

                如果使用 std::list,我无法随机访问值来检索排序序列的中间(中值).

                If using std::list, I can't randomly access values to retrieve middle (median) of sorted sequence.

                自己实现排序并使用例如更好吗?std::vector,还是使用 std::list 和使用 std::list::iterator for-loop-步行到中值?后者看起来不那么开销,但也感觉更难看..

                Is it better to implement sorting myself and go with e.g. std::vector, or is it better to use std::list and use std::list::iterator to for-loop-walk to the median value? The latter seems less overheadish, but also feels more ugly..

                或者对我来说有更多更好的选择吗?

                Or are there more and better alternatives for me?

                推荐答案

                任何随机访问容器(如 std::vector)都可以使用标准的 std::sort 算法,在 标头中可用.

                Any random-access container (like std::vector) can be sorted with the standard std::sort algorithm, available in the <algorithm> header.

                为了求中位数,使用std::nth_element会更快;这足以将一个选定的元素放在正确的位置,但并没有完全对容器进行排序.所以你可以找到这样的中位数:

                For finding the median, it would be quicker to use std::nth_element; this does enough of a sort to put one chosen element in the correct position, but doesn't completely sort the container. So you could find the median like this:

                int median(vector<int> &v)
                {
                    size_t n = v.size() / 2;
                    nth_element(v.begin(), v.begin()+n, v.end());
                    return v[n];
                }
                

                这篇关于使用 STL 容器进行中值计算时,正确的方法是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                上一篇:gcc std::unordered_map 实现速度慢吗?如果是这样 - 为什么? 下一篇:给定位置,如何获取列表中的某个元素?

                相关文章

                <legend id='FCIyI'><style id='FCIyI'><dir id='FCIyI'><q id='FCIyI'></q></dir></style></legend>
                  • <bdo id='FCIyI'></bdo><ul id='FCIyI'></ul>

                  <small id='FCIyI'></small><noframes id='FCIyI'>

                1. <i id='FCIyI'><tr id='FCIyI'><dt id='FCIyI'><q id='FCIyI'><span id='FCIyI'><b id='FCIyI'><form id='FCIyI'><ins id='FCIyI'></ins><ul id='FCIyI'></ul><sub id='FCIyI'></sub></form><legend id='FCIyI'></legend><bdo id='FCIyI'><pre id='FCIyI'><center id='FCIyI'></center></pre></bdo></b><th id='FCIyI'></th></span></q></dt></tr></i><div id='FCIyI'><tfoot id='FCIyI'></tfoot><dl id='FCIyI'><fieldset id='FCIyI'></fieldset></dl></div>

                  1. <tfoot id='FCIyI'></tfoot>