使用C ++,我想创建一个数组,其中仅包含另一个数组的前n个元素。在Scala中如下:
std :: copy_n看起来像它,但我无法使其工作,因为由于某种原因,std :: back_inserter不接受我的数组(我还尝试使用指针而不是数组,仍然无法工作)。
这是迄今为止我最好的尝试。
val arrayTwo = arrayOne.take(n)
我知道可以使用循环并逐一复制元素,但这比必要的更复杂,它占用了不必要的空间,这使得它不易读。是否有一个简单易读的函数,可以从给定的先前数组的前n个元素创建一个新的数组?此外,我想重用某个地方的函数,而不是编写自己的函数,因为我不想不必要地污染命名空间。只要花费O(n)时间,性能无关紧要。std :: copy_n看起来像它,但我无法使其工作,因为由于某种原因,std :: back_inserter不接受我的数组(我还尝试使用指针而不是数组,仍然无法工作)。
这是迄今为止我最好的尝试。
#include <iostream>
#include <utility>
#include <algorithm>
#include <vector>
#include <iterator>
#include <stdio.h>
#include <math.h>
using std::pair;
int main() {
pair<double, double> fabricatedPoints[] = { { 15.3, 12.9 }, { 88.6, 56.0 },
{ 0.4, 18.0 }, { 5.0, 3.13 }, { 2.46, 86.01 } };
pair<double, double> points[] = {};
std::copy_n(std::begin(fabricatedPoints), 3, std::back_inserter(points));
}
这可以通过copy_n或其他方式完成,只要可读即可。如果没有在库中找到可读解决方案(不一定是标准库 - 也可以是Boost或其他广泛使用的库),那么我将接受提供有力证据证明不存在这样的解决方案的答案。
std::vector
吗? - 5gon12eder