如何在C ++中将这个int数组的一部分复制到另一个?

时间:2012-10-29 15:36:35

标签: c++

这是我到目前为止所做的:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    int size;
    int sizeCopy= 0;
    int *array;

    cin >> size;
    cout << endl;
    cin >> sizeCopy;

    array = new int [size];
    int i = 0;
    int counter = 1;

    while(i<size)
    {
        array[i] = counter;
        ++counter;
        ++i;
    }

    cout << "The array contains: ";
    for(i=0; i<size; i++)
    {
        cout << array[i] << ", ";
    }
    cout << "\n";

    return 0;
}

到目前为止,我创建了一个程序,它将询问用户输入的数组大小,以及在新数组中复制数组元素的大小(即sizeCopy)。

我设法创建了第一个数组,我希望它是这样的:如果用户输入为3,则数组将包含1,2,3。 我的用户输入是10,数组将包含1,2,3,4,5,6,7,8,9,10。

这似乎完美无缺。 现在我想将我的int数组的一部分复制到另一个,但它比这复杂一点。 假设第一个数组(大小)的用户输入是10,而sizeCopy(要复制到第二个数组中的元素数量)是2,那么我希望第二个数组为:1,2。 虽然没有结束,但我希望在一段时间后将整个数组复制到第二个数组中。 我想要这样的东西:

  • 1,2
  • 收到第1部分
  • 1,2,3,4
  • 收到第2部分
  • 1,2,3,4,5,6
  • 收到第3部分
  • 1,2,3,4,5,6,7,8
  • 收到第4部分
  • 1,2,3,4,5,6,7,8,9,10
  • 收到第5部分

程序中包含“Received part ..”。 然后就可以了。

如果第一个数组大小的用户是4,而sizeCopy是2,那么我想要这样的东西:

  • 1,2
  • 收到第1部分
  • 1,2,3,4
  • 收到第2部分

我可以获得一些如何完成这项工作的帮助吗? 我想我可以管理如何将整个数组复制到另一个,或者至少是其中的一部分。但是,如何做我想做的事情呢?我想我需要循环,但我不知道更多。

2 个答案:

答案 0 :(得分:3)

tl; dr我要回答标题中的问题。

std::vector与构造函数

一起使用
template< class InputIt >
vector( InputIt first, InputIt last, 
    const Allocator& alloc = Allocator() );

std::copy

答案 1 :(得分:-1)

我不喜欢C ++方式(std :: copy) - 我宁愿使用memcpy()memmove()。我在 _control_ </sarcasm>

中感觉更多