Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.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
如何修复初学者C++;密码? 我对C++语言很陌生,试图完成一个非常简单的代码挑战,总结数组中的所有数字。测试环境没有显示错误消息,它只给我一个退出代码139。根据一些研究,这意味着我的代码产生了未定义的行为(也可能是内存碎片?)。这只是语法方面的东西还是我对C++的一些遗漏? #include <vector> int sum(std::vector<int> nums) { int runningSum = 0; for (int i=0; i <= nums.size(); i++) { runningSum = runningSum + nums[i]; } std::cout << "The total sum for nums: " << runningSum; } #包括 整数和(标准::向量nums){ int runningSum=0; 对于(inti=0;i_C++_Arrays_For Loop - Fatal编程技术网

如何修复初学者C++;密码? 我对C++语言很陌生,试图完成一个非常简单的代码挑战,总结数组中的所有数字。测试环境没有显示错误消息,它只给我一个退出代码139。根据一些研究,这意味着我的代码产生了未定义的行为(也可能是内存碎片?)。这只是语法方面的东西还是我对C++的一些遗漏? #include <vector> int sum(std::vector<int> nums) { int runningSum = 0; for (int i=0; i <= nums.size(); i++) { runningSum = runningSum + nums[i]; } std::cout << "The total sum for nums: " << runningSum; } #包括 整数和(标准::向量nums){ int runningSum=0; 对于(inti=0;i

如何修复初学者C++;密码? 我对C++语言很陌生,试图完成一个非常简单的代码挑战,总结数组中的所有数字。测试环境没有显示错误消息,它只给我一个退出代码139。根据一些研究,这意味着我的代码产生了未定义的行为(也可能是内存碎片?)。这只是语法方面的东西还是我对C++的一些遗漏? #include <vector> int sum(std::vector<int> nums) { int runningSum = 0; for (int i=0; i <= nums.size(); i++) { runningSum = runningSum + nums[i]; } std::cout << "The total sum for nums: " << runningSum; } #包括 整数和(标准::向量nums){ int runningSum=0; 对于(inti=0;i,c++,arrays,for-loop,C++,Arrays,For Loop,,函数应该返回,但是没有返回,所以这里有未定义的行为 你的循环超出了向量的最后一个元素,它有另一个UB 以下是固定版本: int sum(std::vector<int> nums) { int runningSum = 0; for (int i=0; i < nums.size(); i++) { // ^^^^ runningSum = runningSum + nums[i]; } std::cout <<

,函数应该返回,但是没有返回,所以这里有未定义的行为

你的循环超出了向量的最后一个元素,它有另一个UB

以下是固定版本:

int sum(std::vector<int> nums) {
  int runningSum = 0;
  for (int i=0; i < nums.size(); i++) {
  //            ^^^^
    runningSum = runningSum + nums[i];
    }
  std::cout << "The total sum for nums: " << runningSum;
return runningSum;
//     ^^^^
}
int和(标准::向量nums){
int runningSum=0;
对于(int i=0;istd::cout很抱歉,我必须返回结果。我还必须删除我还想添加一个关于使用
std::vector::operator[]
的快速说明

从文档中可以看出,它返回向量中元素的引用。但与
std::vector::at
不同,使用带有数字
n>=vector.size()
运算符[]
会导致未定义的行为


如果您使用的是
std::vector::at
,它会抛出一个超出范围的异常,这是一个更为健谈的异常。

想想您的循环在最后一次迭代中尝试访问向量的哪个元素……标准库为此提供了
std::acculate
。您的问题是
VTC作为一个输入错误。中的有效索引创建一个容器应该是你首先要学习的。如果你还没有学会,请使用
at()。(注意:这应该是你在这里发布之前做的第一件事。你收到的反对票可能是由于缺乏研究)该函数看起来应该返回结果,而不是打印结果……这是Oblivion所说的,因此最好接受他们的答案并将其添加为注释,而不是添加其他人已经给出的答案的副本。还有const&as参数作为cherry on the cake,谢谢添加到答案中
int sum(const std::vector<int>& nums)