• <tfoot id='IQMbc'></tfoot>

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

        如何在不循环的情况下将数组的内容复制到 C++

        时间:2023-09-15

      4. <legend id='HgVp9'><style id='HgVp9'><dir id='HgVp9'><q id='HgVp9'></q></dir></style></legend>
          <bdo id='HgVp9'></bdo><ul id='HgVp9'></ul>

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

              <tbody id='HgVp9'></tbody>

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

                1. 本文介绍了如何在不循环的情况下将数组的内容复制到 C++ 中的 std::vector?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  我有一个值数组,它从程序的不同部分传递给我的函数,我需要存储这些值以供以后处理.由于我不知道在处理数据之前我的函数会被调用多少次,我需要一个动态存储结构,所以我选择了一个std::vector.我不想对 push_back 的所有值单独执行标准循环,如果我可以使用类似于 memcpy 的东西将其全部复制,那就太好了.

                  I have an array of values that is passed to my function from a different part of the program that I need to store for later processing. Since I don't know how many times my function will be called before it is time to process the data, I need a dynamic storage structure, so I chose a std::vector. I don't want to have to do the standard loop to push_back all the values individually, it would be nice if I could just copy it all using something similar to memcpy.

                  推荐答案

                  如果你在得到数组和数组大小后可以构造向量,你可以说:

                  If you can construct the vector after you've gotten the array and array size, you can just say:

                  std::vector<ValueType> vec(a, a + n);
                  

                  ...假设 a 是您的数组,而 n 是它包含的元素数.否则,std::copy() w/resize() 会起作用.

                  ...assuming a is your array and n is the number of elements it contains. Otherwise, std::copy() w/resize() will do the trick.

                  我会远离 memcpy() 除非您可以确定这些值是普通数据 (POD) 类型.

                  I'd stay away from memcpy() unless you can be sure that the values are plain-old data (POD) types.

                  另外,值得注意的是,这些都没有真正避免 for 循环——这只是你是否必须在代码中看到它的问题.O(n) 运行时性能对于复制值是不可避免的.

                  Also, worth noting that none of these really avoids the for loop--it's just a question of whether you have to see it in your code or not. O(n) runtime performance is unavoidable for copying the values.

                  最后,请注意,对于大多数 STL 算法来说,C 风格的数组是完全有效的容器——原始指针等价于 begin() 和 (ptr + n) 等价于 end().

                  Finally, note that C-style arrays are perfectly valid containers for most STL algorithms--the raw pointer is equivalent to begin(), and (ptr + n) is equivalent to end().

                  这篇关于如何在不循环的情况下将数组的内容复制到 C++ 中的 std::vector?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:同时写入 vector<bool> 下一篇:如何使用迭代器在向量中导航?(C++)

                  相关文章

                  最新文章

                  1. <tfoot id='YgQE1'></tfoot>
                  2. <small id='YgQE1'></small><noframes id='YgQE1'>

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