使用向量时,当返回函数更改时,无法看到输出
Cannot see output when return type of function changes while using vector
在C 中给定以下功能:
ps。仔细注意< =在for循环中,因为向量的大小为[a.size(( 1] [b.size(( 1]
vector<int> lcs2(vector<int> &a, vector<int> &b)
{
vector<vector<int> >L(a.size() + 1 , vector<int>(b.size() + 1 , 0));
for (int i = 0; i <= a.size(); ++i)
{
for (int j = 0; j <= b.size(); ++j)
{
if (i == 0 || j == 0)
L[i][j] = 0;
else if (a[i - 1] == b[i - 1])
L[i][j] = L[i-1][j-1] + 1;
else
L[i][j] = std::max(L[i-1][j], L[i][j-1]);
}
}
int index = L[a.size()][b.size()];
vector<int> lcs(index + 1);
int i = a.size() , j = b.size();
while (i > 0 && j > 0)
{
if (a[i - 1] == b[j - 1])
{
lcs[index-1] = a[i-1];
i--; j--; index--;
}
else if (L[i - 1][j] > L[i][j - 1])
--i;
else
--j;
}
return lcs;
}
当我在main((函数中运行以下命令时:
vector<int> lcs = lcs2(a , b);
std::cout << lcs.size() << std::endl;
我能够在控制台上输出。但是,当我对代码进行以下更改时:
- 将LCS2的返回类型更改为INT
- 返回lcs.size((,而不是lcs
- 将main((中的LCS数据类型从向量更改为int
- 将正在从lcs.ize((输出的值更改为lcs
我无法在控制台上获得所需的输出。当我从VSCODE运行构建任务时,我会收到The terminal process terminated with exit code: 3221226356
之类的消息。
请帮助我。
ps。在LCS2((中的返回语句之前,如果我添加一个语句以打印LCS.Size((的值,也可以正常工作。
您有一个循环
for (int i = 0; i <= a.size(); ++i)
然后您在循环中访问a[i]
。当 i == a.size()
时,这是界限的,因此您会得到不确定的行为。
尝试使用at
方法(使用a.at(i)
而不是a[i]
,而不是其他每个索引操作(,您将获得异常而不是未定义的行为。
相关文章:
- 递归函数计算序列中的平方和(并输出过程)
- 请解释"函数1(p1,p2,p3);"的输出
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何从void函数输出字符串
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 当使用通配符和null指针调用函数时,对输出的说明
- 为什么递归函数的最终输出是 5?
- C++ 构造函数未显示输出
- c++ 将成员函数的输出写入文本文件
- 简单函数并不总是返回预期的输出
- 当使用我在一个函数、另一个函数中修改的数组时,在我的输出中得到一个奇怪的负数
- GCC 仪器 - 是否可以自动输出函数的参数?
- 意外输出..函数绑定在虚拟表中的发生方式
- 输出函数调用日志文件
- C++:程序不输出函数返回值
- 通用化标准库容器的输出函数
- C++:int数组[a][b][C]={0};未将所有值设置为0.是那个指令错了,还是我的输出函数出了问题
- <</>>运算符重载和输入/输出函数之间的区别
- Ncurses 输出函数只接受常量数据