在我的代码中找不到错误:c++
Cant find error in my code : C++
我正在尝试解决这个问题。我写了下面的代码:
#include <iostream>
#include <vector>
using namespace std;
int findIndex(x, lastAns, N) {
return ((x == !lastAns) % N);
}
void query_1(int x, int y, int N, int lastAns, std::vector< std::vector<int> >& v) {
v[findIndex(x, lastAns, N)].push_back(y);
}
void query_2(int x, int y, int N, int* lastAns, std::vector< std::vector<int> >& v) {
*lastAns = y % (v[findIndex(x, *lastAns, N)].size());
cout << *lastAns << endl;
}
int main(int argc, char const *argv[])
{
int N, Q;
cin >> N >> Q;
std::vector< std::vector<int> > v;
std::vector<int> buff;
int queryType;
int lastAns = 0;
int x, y;
for(int i=0; i<N; ++i) {
for(int j=0; j<N-1; ++i) {
buff.push_back(0);
}
v.push_back(buff);
}
for(int i=0; i<Q; ++i) {
cin >> queryType;
cin >> x >> y;
if(queryType == 1) {
query_1(x, y, N, lastAns, v);
}
else if (queryType == 2) {
query_2(x, y, N, &lastAns, v);
}
else continue;
}
return 0;
}
我得到的错误是:
抛出'std::bad_alloc'实例后终止调用
(): std:: bad_alloc
我以前没有遇到过这个错误。当我通过gdb运行代码时,得到如下结果:
Program received signal SIGABRT, Aborted.
0x00007ffff74ab418 in __GI_raise (sig=sig@entry=6)
at ../sysdeps/unix/sysv/linux/raise.c:54
54 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
我的代码有什么问题?
备注:
for(int i=0; i<N; ++i) {
for(int j=0; j<N-1; ++i) // <<<<<< some little mouse got here
编辑:解释:你创造了一个无限循环,其中j<N-1
总是true
。这意味着,您将新元素压入vector,直到没有可用的内存为止,因此会出现运行时错误。
这个函数可能是导致错误的原因:
int findIndex(x, lastAns, N) {
return ((x == !lastAns) % N);
}
首先,参数缺少它们的类型。
接下来,表达式
!lastAns
将求值为零或非零。这意味着您正在将整数x
与零或非零进行比较:(x == 0) or (x == 1)
上述表达式的结果要么为零,要么为非零。假设非零为1。得到最终表达式
`return 0 % N;` or `return 1 % N`;
最终返回值为0或1。N
变量无关紧要,因为唯一有效的值是0或1。你不能让N为零(你不检查),当N为1时,你仍然得到0或1。
那么你的表达式:
v[findIndex(x, lastAns, N)]
将为v[0]
或' v[1].
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 错误:未在此范围内声明'reverse'