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

标签 c++ arrays vector copy

我是 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/

相关文章:

arrays - VBA 第一个数组项始终为空

c++ - 如何确定在 C++ 中添加到 vector 的值的数量?

c++ - 调用 clear() 后 vector 的元素仍然可以引用?

c++ - 返回在单独的头文件 : unknown type name 中定义的 Struct

c++ - 无法用常量变量初始化数组...为什么?

c++ - 从文本文件中选取数组元素

vector - 如何使用 fold 对向量求和?

c++ - C++ 中的表达式 SFINAE 和硬错误

c++ - C++ 可以通过添加一些东西而不删除所有以前的上下文来处理记事本输入文件吗?

java - 如何从 ResultSet 的行中的列获取 int[] 数组?