проблема с Vector в c++ 6.0
в функции делаю resize вектора. при первом вызове функции всё прекрасно работает... когда она вызывается во второй раз при попытке сделать опять resize (просто увеличиваю кол-во членов на один) выдаёт ошибку: Debug error!..... after Normal block (#72) at [адрес]...
вот такая интересная проблема!=))
в функции делаю resize вектора. при первом вызове функции всё прекрасно работает... когда она вызывается во второй раз при попытке сделать опять resize (просто увеличиваю кол-во членов на один) выдаёт ошибку: Debug error!..... after Normal block (#72) at [адрес]...
Код в студию.
вот такая интересная проблема!=))
в функции делаю resize вектора. при первом вызове функции всё прекрасно работает... когда она вызывается во второй раз при попытке сделать опять resize (просто увеличиваю кол-во членов на один) выдаёт ошибку: Debug error!..... after Normal block (#72) at [адрес]...
А не пробовал использовать reserve()?
Код в студию.
vector<int> PointVideo;
//............
bool Send(....){
//.........
PointVideo.resize(PointVideo.end()+1);//тут
//ошибка
PointVideo[PointVideo.end()]=....
//.........
}
всё инициализируется...
при первом вызове Send - всё в порядке, увеличивает, добавляет...
Вызываем второй раз... ошибка...=((
Пришлось пользовать list
А не пробовал использовать reserve()?
Когда в первый раз вызывается, то добавляет сколько угодно, проверял... тем и бесит эта ошибка
vector<int> PointVideo;
//............
bool Send(....){
//.........
PointVideo.resize(PointVideo.end()+1);//тут
//ошибка
PointVideo[PointVideo.end()]=....
//.........
}
всё инициализируется...
при первом вызове Send - всё в порядке, увеличивает, добавляет...
Вызываем второй раз... ошибка...=((
Пришлось пользовать list
Уморил... :D
Ты посмотри в документации, что возвращает end() и что надо передать в resize().
Уморил... :D
Ты посмотри в документации, что возвращает end() и что надо передать в resize().
=)))))
Мда, надо следить за тем что пишешь...=))
Воть. Просто к инету у меня бук подключён, а код на другом компе(нет в сетки), ошибочка вышла...
#include <vector>
vector<int> PointVideo;
//............
bool Send(....){
//.........
PointVideo.resize(i+1);//тут
//ошибка
PointVideo[PointVideo.end()]=....
//.........
}
где i-предыдуший размер...
ещё раз сорри за введение в заблуждение
Уморил... :D
Ты посмотри в документации, что возвращает end() и что надо передать в resize().
=)))))
Мда, надо следить за тем что пишешь...=))
Воть. Просто к инету у меня бук подключён, а код на другом компе(нет в сетки), ошибочка вышла...
#include <vector>
vector<int> PointVideo;
//............
bool Send(....){
//.........
PointVideo.resize(i+1);//тут
//ошибка
PointVideo[PointVideo.end()]=....
//.........
}
где i-предыдуший размер...
ещё раз сорри за введение в заблуждение
=)))))
Мда, надо следить за тем что пишешь...=))
Воть. Просто к инету у меня бук подключён, а код на другом компе(нет в сетки), ошибочка вышла...
#include <vector>
vector<int> PointVideo;
//............
bool Send(....){
//.........
PointVideo.resize(i+1);//тут
//ошибка
PointVideo[PointVideo.end()]=....
//.........
}
где i-предыдуший размер...
ещё раз сорри за введение в заблуждение
Другое дело.
Хотя, еще раз взглянуть на то, что возвращает end().
Возвращаемое значение - итератор, указывающий за последний элемент, т.е. за границу вектора, поэтому и появляется ошибка доступа в строке
PointVideo[PointVideo.end()]=....;
Если, ты хочешь просто добавлять элемент в вектор, используй push_back().
Другое дело.
Хотя, еще раз взглянуть на то, что возвращает end().
Возвращаемое значение - итератор, указывающий за последний элемент, т.е. за границу вектора, поэтому и появляется ошибка доступа в строке
PointVideo[PointVideo.end()]=....;
Если, ты хочешь просто добавлять элемент в вектор, используй push_back().
ОК! Спасибо за разъяснения!=))
Хотя как оказалось для задачи выгоднее использовать список.=))