如何将较大的阵列缩小为较小的阵列?

时间:2014-09-22 22:47:01

标签: c++

我有一个阵列,让我们说200个成员,然后是一个较小的阵列,让我们说100个成员。如果较大的阵列有113个成员,则不能将整个数组放入较小的数组中。所以我希望它能够从下到上开始尝试尽可能多地适应较小的数组。我该怎么做?

int uniq() { static int current = 0; return ++current; }

int main()
{
    int larger_array[200];
    int smaller_array[100];
    std::generate_n(larger_array, 113, uniq);
    std::reverse_copy(std::begin(larger_array), std::end(larger_array), std::begin(smaller_array));
    for (int i = 0; i < 100; ++i)
        std::cout << smaller_array[i] << "\n";
    return 0;
}

2 个答案:

答案 0 :(得分:1)

使用std::copy,例如:

std::copy(std::begin(largerArray), std::begin(largerArray) + 
    (std::end(smallerArray) - std::begin(smallerArray)),
    std::begin(smallerArray));

答案 1 :(得分:0)

如果您知道您希望以相反的顺序复制100的{​​{1}}个元素,那么这应该可行。与代码的唯一区别是使用larger_array来获取第一个迭代器。

std::prev()