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

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

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

    1. 使用 std::copy 插入 STL 队列

      时间:2024-05-11

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

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

          1. <legend id='uvuGG'><style id='uvuGG'><dir id='uvuGG'><q id='uvuGG'></q></dir></style></legend>

                <tbody id='uvuGG'></tbody>

                <bdo id='uvuGG'></bdo><ul id='uvuGG'></ul>
              • 本文介绍了使用 std::copy 插入 STL 队列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                问题描述

                我想使用 std::copy 将元素插入这样的队列:

                I'd like to use std::copy to insert elements into a queue like this:

                vector<int> v;
                v.push_back( 1 );
                v.push_back( 2 );
                
                queue<int> q;
                
                copy( v.begin(), v.end(), insert_iterator< queue<int> >( q, q.front() ) );
                

                但是编译失败,抱怨 begin 不是 std::queue 的成员.

                But this fails to compile, complaining that begin is not a member of std::queue.

                注意:我也用 std::inserter 尝试过 - 这也失败了,这次说 'reference' 不是 'std::queue' 的成员.std::back_inserterstd::back_insert_iterator 也因相同的错误而失败.

                Note: I tried it with std::inserter too - this also failed, this time saying that 'reference' is not a member of 'std::queue'. std::back_inserter and std::back_insert_iterator also fail with the same error.

                我是否遗漏了一些明显的东西,或者 insert_iterator 只是不适用于队列?

                Am I missing something obvious, or do insert_iterators just not work with queues?

                推荐答案

                不幸的是 std::queue 将名为 push_back 的函数改编"为仅 push 这意味着标准的 back_insert_iterator 不起作用.

                Unfortunately std::queue 'adapts' the function known as push_back to just push which means that the standard back_insert_iterator doesn't work.

                可能最简单的方法(尽管在概念上很难看)是用一个寿命短的容器适配器适配器[原文如此](呃!)来适应容器适配器,该适配器的寿命与后插入迭代器一样长.

                Probably the simplest way (albeit conceptually ugly) is to adapt the container adapter with a short lived container adapter adapter[sic] (eugh!) that lives as long as the back insert iterator.

                template<class T>
                class QueueAdapter
                {
                public:
                    QueueAdapter(std::queue<T>& q) : _q(q) {}
                    void push_back(const T& t) { _q.push(t); }
                
                private:
                    std::queue<T>& _q;
                };
                

                这样使用:

                std::queue<int> qi;
                
                QueueAdapter< std::queue<int> > qiqa( qi );
                
                std::copy( v.begin(), v.end(), std::back_inserter( qiqa ) );
                

                这篇关于使用 std::copy 插入 STL 队列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                上一篇:STL 队列的线程安全 下一篇:为什么当我连接了调试器/IDE 时,我的 STL 代码运行得如此缓慢?

                相关文章

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

                  <small id='4VQ7e'></small><noframes id='4VQ7e'>

                  <tfoot id='4VQ7e'></tfoot><legend id='4VQ7e'><style id='4VQ7e'><dir id='4VQ7e'><q id='4VQ7e'></q></dir></style></legend>

                  • <bdo id='4VQ7e'></bdo><ul id='4VQ7e'></ul>