Я пытаюсь решить эту проблему problem. Я написал этот код:Ошибка поиска в моем коде: 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;
}
Ошибки я получаю:
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Я нету наткнулся на эту ошибку раньше. Когда я запускаю код через gdb, я получаю следующее:
Program received signal SIGABRT, Aborted.
0x00007ffff74ab418 in __GI_raise ([email protected]=6)
at ../sysdeps/unix/sysv/linux/raise.c:54
54 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
В чем проблема с моим кодом?
Кто-то предложит вам использовать debbuger рано или поздно ... – xinaiz
Есть ли какая-то особая причина использования уродливого макроса вместо нормальной или шаблонной функции? – Slava
Нет причин. Я просто подумал о достаточно простых вычислениях, достаточно было бы макроса. –