Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Теория. Почему в данном случае copy() не работает после reserve(), но работает после resize()? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ gcc VS DEV-C++ 4.9.9.2 http://www.cyberforum.ru/cpp-beginners/thread53664.html
Люди!! Срочно нужны знающие люди по данному вопросу.Только сейчас узнал,что вся практика будет в gcc...... Какие отличия вообще между ними ?! Программенг в SunOS... gcc сишный компиль.а вот...
C++ Преобразовать последовательность Народ, сталкнулся с таким заданием (я примерно понял как делать) возникла проблема. Задачние: Даны действительные числа А1,...А20. Преобразовать последовательность: А1,А3,А5...А19; А2,А4...А20. Я... http://www.cyberforum.ru/cpp-beginners/thread53662.html
C++ Проблема со считыванием строк из класса.
Всем привет.На ютубе узрел ролик... using namespace std; int main() { ifstream f("C:\Documents and Settings\Vlad\My Documents\My Pictures\fuck.txt");
Отсортировать все символы в порядке возрастания методом пузырька C++
символы: M A S S I V - char нужно Отсортировать все символы в порядке возрастания медодом пузырька .Нужно нарисовать блок схему (((((( Мальчики ПОМОГИТЕ!!!! кто может пожалуйста..!(((
C++ Многочлен P(x) степени N http://www.cyberforum.ru/cpp-beginners/thread53622.html
помогите с задачкой: задача: Дан многочлен Р(х) степени N. Даны действительные числа А и В. Получить многочлен (Ах+В)Р(х). прогу писать не нада. помогите плиз написать математическую формулу решения...
C++ помогите с програмкой Необходимо написать программку, открывающую текстовый файл, которая при просмотре файла: удаляет в каждой строке слова после которых стоит любой знак препинания, в том числе и сам знак... Помогите... подробнее

Показать сообщение отдельно
#pragma
Временно недоступен
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921

Теория. Почему в данном случае copy() не работает после reserve(), но работает после resize()? - C++

02.10.2009, 02:02. Просмотров 1190. Ответов 1
Метки (Все метки)

Есть такая функция:
C++
1
2
3
4
5
6
  void Array::SetStartIndexes(sz3_Arr_t *array)
  {
     start_index.reserve(array->size());
     copy(array->begin(),array->end(),start_index.begin());
     std::cout<<start_index.at(0);
  }
Где sz3_Arr_t это vector<int>,
array - содержит элементы типа int на момент передачи параметром (проверено печатью),
start_index - вектор того же типа,что и array,на момент работы функции он создан в конструкторе и пуст.
Проблема: Программа вылетает при попытке доступа к первому элементу в строке (по сути это проверка)
C++
1
std::cout<<start_index.at(0);
С ошибкой out_of_range(exeption).
Но если поменять reserve() на resize():
C++
1
2
3
4
5
6
  void Array::SetStartIndexes(sz3_Arr_t *array)
  {
     start_index.resize(array->size());
     copy(array->begin(),array->end(),start_index.begin());
     std::cout<<start_index.at(0);
  }
То всё работает корректно.Пользовался справочником http://www.cplusplus.com/reference/stl/vector/reserve/ ,вроде как будто похожие фунции,но я недопонимаю,почему именно прога вылетает с rezerve(),и в чём же точная разница этих функций.Поясните кто знает.

P.S.Мне это странно,так как обе функции типа void,и как бы они выполняют ту же операцию,ничего не возвращая.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru