Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
copy()将除最后一个元素外的所有元素从向量复制到数组c++; 我对C++和编程都是新的。请随时留下任何关于我的代码的提示、提示或建议_C++_Arrays_Vector_Copy - Fatal编程技术网

copy()将除最后一个元素外的所有元素从向量复制到数组c++; 我对C++和编程都是新的。请随时留下任何关于我的代码的提示、提示或建议

copy()将除最后一个元素外的所有元素从向量复制到数组c++; 我对C++和编程都是新的。请随时留下任何关于我的代码的提示、提示或建议,c++,arrays,vector,copy,C++,Arrays,Vector,Copy,我试图将我的双精度从向量复制到数组。我使用了copy(),它正在复制除最后一个元素之外的所有元素。因此,数组中的最后一个元素与我使用copy之前保持完全相同。因此,当我尝试添加数组中元素的和时,我没有得到正确的和 这是我的密码: vector<double> myVector; double myArray[4]; double myDouble = 0.0; ...//(add elements to vector) copy(&myVector[0]

我试图将我的双精度从向量复制到数组。我使用了
copy()
,它正在复制除最后一个元素之外的所有元素。因此,数组中的最后一个元素与我使用copy之前保持完全相同。因此,当我尝试添加数组中元素的和时,我没有得到正确的和

这是我的密码:

vector<double> myVector; 
double myArray[4];
double myDouble = 0.0;

    ...//(add elements to vector)

    copy(&myVector[0], &myVector[4], myArray);

for(int i = 0; i < 4; i++)
{
    myDouble += myArray[i];
    if(i == 4)
        cout << "The sum of your values is " << fixed << setprecision(2) << myDouble << endl;
}
向量myVector;
双myArray[4];
double myDouble=0.0;
…/(将元素添加到向量)
复制(&myVector[0]、&myVector[4]、myArray);
对于(int i=0;i<4;i++)
{
myDouble+=myArray[i];
如果(i==4)

无法通过以下方式复制向量中的所有元素:

copy(myVector.begin(), myVector.end(), myArray);

通过以下方式复制向量中的所有元素:

copy(myVector.begin(), myVector.end(), myArray);

调用
std::copy()
复制四个元素。这似乎填充了数组。请注意,数组正好包含4个元素,最后一个有效索引是
3
。向量
myVector
似乎至少包含5个元素:如果它包含的元素少于5个,则表达式
myVector[4]
是非法的。也就是说,序列中的结束迭代器总是指序列最后一个值后面的元素,即,序列是半开放的:包括开始,结束是不包括的第一个元素

也就是说,您可能希望这样复制:

std::copy(myVector.begin(), std::min(4, myVector.size()) + myVector.begin(), myArray);
当然,要得到向量中元素的和,实际上需要使用

double sum = std::accumulate(myVector.begin(), myVector.end(), 0.0);

调用
std::copy()
复制四个元素。这似乎填充了数组。请注意,数组正好包含4个元素,最后一个有效索引是
3
。向量
myVector
似乎至少包含5个元素:如果它包含的元素少于5个,则表达式
myVector[4]
是非法的。也就是说,序列中的结束迭代器总是指序列最后一个值后面的元素,即,序列是半开放的:包括开始,结束是不包括的第一个元素

也就是说,您可能希望这样复制:

std::copy(myVector.begin(), std::min(4, myVector.size()) + myVector.begin(), myArray);
当然,要得到向量中元素的和,实际上需要使用

double sum = std::accumulate(myVector.begin(), myVector.end(), 0.0);
您有以下代码:

copy(&myVector[0], &myVector[4], myArray);
它复制了4个元素。 现在您有了目标阵列的十分之一:

double myArray[4];
所以这个数组有4个元素

似乎要复制除最后一个元素以外的所有元素,因此只复制3个元素:

copy(&myVector[0], &myVector[3], myArray);
您有以下代码:

copy(&myVector[0], &myVector[4], myArray);
它复制了4个元素。 现在您有了目标阵列的十分之一:

double myArray[4];
所以这个数组有4个元素

似乎要复制除最后一个元素以外的所有元素,因此只复制3个元素:

copy(&myVector[0], &myVector[3], myArray);

不相关,但您应该将代码的打印部分移到
for
循环不相关的
之外,但为什么要从向量复制到数组?请使用
myVector.begin()
end()
而不是
&myVector[0]
。更喜欢迭代器而不是指针。无关,但您应该将代码的打印部分移到
for
循环无关的
之外,但为什么要从向量复制到数组?使用
myVector.begin()
end()
而不是
&myVector[0]
。更喜欢迭代器而不是指针。并且确保向量中的元素不超过4个,因为这是数组中的元素数。是的,检查目标数组是否足够大是另一回事,并确保向量中的元素不超过4个,因为数组中有这么多元素。是的,检查目标阵列是否足够大是另一回事