【问题标题】:How to convert a std::array to a std::vector?如何将 std::array 转换为 std::vector?
【发布时间】:2018-05-25 01:54:31
【问题描述】:

我需要将std::array 转换为std::vector,但无论如何我都无法快速完成。下面是示例代码:

 std::array<char,10> myData={0,1,2,3,4,5,6,7,8,9};

现在我需要创建一个向量,例如:

std::vector<char> myvector;

并使用数组值对其进行初始化。

最快的方法是什么?

【问题讨论】:

  • 问得好,真的,但是为什么数组类型是char 而初始化列表使用数字呢?
  • @RYoda 我想要一个可以在 char 中看到的数据数组,所以没有理由定义消耗更多内存的 int 数组。
  • @mans 应该使用int8_t

标签: c++ arrays c++11 vector


【解决方案1】:

您可以使用 constructor of std::vector 获取迭代器。

使用范围 [first, last) 的内容构造容器。

例如

std::array<char,10> myData = {0,1,2,3,4,5,6,7,8,9};
std::vector<char> myvector(myData.begin(), myData.end());

【讨论】:

    【解决方案2】:

    我会使用向量的范围构造函数 - 看起来像 myvector(myData.begin(), myData.end())

    供将来参考: http://en.cppreference.com/w/cpp/container/vector/vector

    【讨论】:

      【解决方案3】:
      std::vector<char> myvector { myData.begin(), myData.end() };
      

      【讨论】:

        【解决方案4】:

        只为多样化:

        std::vector<char> myvector(std::begin(myData), std::end(myData);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-10-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-31
          • 2016-12-06
          • 2021-03-02
          • 2019-08-14
          相关资源
          最近更新 更多