【问题标题】:Copying an array into another array in C++在 C++ 中将一个数组复制到另一个数组中
【发布时间】:2014-08-24 10:01:12
【问题描述】:

我有一个这样创建的数组:

std::vector<int> data(n);

我有另一个数组 b (c Array b[]) 有 n 个 int 值。我想将这些值放入data

for (int i =0 ; i<n, i++) {
    data[i] = b[i]; 
}  

C++ 中有没有其他方法可以将一个数组复制到另一个数组中?

【问题讨论】:

  • 是否要将现有数组的元素复制到另一个现有数组中? std::copy 在没有手工循环的情况下做同样的事情。
  • 复制后还需要data 吗?
  • 如果两者实际上都是向量而不是数组:data = b.
  • @Bathsheba 是的,我需要 data ,因为这将由其他函数处理。

标签: c++ vector copy


【解决方案1】:

从你的问题看不太清楚,但是如果bdata都是std::vector&lt;int&gt;,那么你可以做五件相关的事情:

初始化一个新的datab

std::vector<int> data = b; // copy constructor

b初始化一个新的data

std::vector<int> data(begin(b), begin(b) + n); // range constructor

复制 b 完全复制到现有的data 中(覆盖当前的data 值)

data = b; // assignment

复制b 的第一个n 元素到现有的data(覆盖当前的data 值)

data.assign(begin(b), begin(b) + n); // range assignment

追加b的第一个n元素到现有的data

data.insert(end(a), begin(b), begin(b) + n); // range insertion

如果b 正好有n 元素,您也可以使用end(b) 代替begin(b) + n。如果b是C风格的数组,你可以做一个using std::begin;using std::end,范围构造/赋值/插入将继续工作。

【讨论】:

    【解决方案2】:

    如果bint[](即C 数组),那么您可以这样做:

    std::vector<int> data(b + 0, b + n);
    

    如果b 也是std::vector 那么你可以这样做:

    std::vector<int> data = b;
    

    【讨论】:

      【解决方案3】:

      您可以使用copy(但请确保目标向量中有足够的元素!)

      copy(begin(b), end(b), begin(data))
      

      【讨论】:

        【解决方案4】:

        std::vector&lt;int&gt; data(b, b + n);

        【讨论】:

        • @user2799508 改个名字就行了
        猜你喜欢
        • 2022-07-05
        • 1970-01-01
        • 1970-01-01
        • 2011-05-08
        • 1970-01-01
        • 2017-09-13
        • 1970-01-01
        • 2022-11-25
        • 1970-01-01
        相关资源
        最近更新 更多