gpt4 book ai didi

c++ - copy() 将除最后一个元素之外的所有元素从 vector 复制到数组 C++

转载 作者:行者123 更新时间:2023-11-30 00:55:05 27 4
gpt4 key购买 nike

我是 C++ 和一般编程的新手。请随意留下关于我的代码的任何提示、技巧或建议!!

我正在尝试将我的 double 从 vector 复制到数组。我使用了 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;
}

谢谢!让我知道是否需要更具体。

最佳答案

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

也就是说,您可能想像这样复制:

std::copy(myVector.begin(), std::min(4, myVector.size()) + myVector.begin(), myArray);

当然,要获得 vector 中元素的总和,您将实际使用

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

关于c++ - copy() 将除最后一个元素之外的所有元素从 vector 复制到数组 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12960105/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com