程序返回我总是 0
Program returns me always 0
>我在编译中没有错误,也没有警告,但程序(我的矢量数组)总是返回我 0,为什么?
源代码:
#include <iostream>
#include <vector>
std::vector<int> recursivite(std::vector<int> const source, int const index, int const length);
void recursiviteFinal(std::vector<int> source, int const index, int const length, std::vector<int> dest);
int main()
{
std::vector<int> myTab {{ 1, 2, 3, 4,
5, 6, 7, 8,
9, 10, 11, 12,
13, 14, 15, 16,
17, 18, 19, 20
}};
std::vector<int> myTab2{{0, 0, 0, 0}};
myTab2 = recursivite(myTab, 4, 4);
for (unsigned int i{}; i < myTab2.size(); ++i)
std::cout << myTab2[i];
}
std::vector<int> recursivite(std::vector<int> const source, int const index, int const length)
{
std::vector<int> myTab(length);
recursiviteFinal(source, index, length, myTab);
return myTab;
}
void recursiviteFinal(std::vector<int> source, int const index, int const length, std::vector<int> dest)
{
if (length > 0)
{
dest[length - 1] = source[index + length - 1];
recursiviteFinal(source, index, length - 1, dest);
}
}
有人可以告诉我如何"解决这个问题"?谢谢 !
您只是在修改原始向量的副本:
void recursiviteFinal(..., std::vector<int> dest)
~~~~~~~~~~~~~~~~~~~~~
因此,当您在函数中执行此操作时:
dest[length - 1] = source[index + length - 1];
它只修改函数退出时被销毁的向量的副本。
解决方案:通过引用传递向量以便能够修改原始向量:
void recursiviteFinal(..., std::vector<int>& dest)
~
在使用语言之前先学习它。
相关文章:
- 为什么我的程序在for循环中k=0时返回垃圾值
- 为什么这个程序返回最后一个单词而不是最长的单词?
- 为什么C++程序在太大时返回代码而不是答案?
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- 程序中的布尔函数返回输入的范围无论如何都是无效的
- 为什么我的程序在 O0 和 O2 的优化级别返回不同的结果
- 程序不向函数返回值
- 返回不需要的值的二叉搜索程序
- 为什么这个程序没有打印返回的迭代器的正确第二个元素?
- C ++程序如何返回我的数组或写入全局变量
- bash脚本在使用popen()时不返回代码以调用C ++程序
- 如何使用从处理程序调度的最终回调将响应异步返回给调用方on_read?
- 返回主窗口/ C ++后,应用程序正在关闭
- 将数组作为多线程应用程序中函数的返回传递
- 当if语句告诉程序返回0时,我的程序不会退出
- 同一个程序每次返回不同的输出
- 由于值返回函数中的错误,程序无法编译.它说未声明的标识符
- 此程序不返回任何内容
- 为什么这个C++程序在代码::块和在线 IDE 之间返回不同的结果?
- 类对象的向量C++文件返回程序