我有一个阵列,让我们说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;
}
答案 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()