Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 30.03.2013
Сообщений: 18
1

Вектор структур, в которых также векторы. Ошибка переполнения вектора

23.04.2014, 14:28. Показов 1523. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как реализовать такое дело:
Есть структура MyStruct1
C++
1
2
3
    struct MyStruct1{
        std::vector<MyStruct2> myStruct2;
    };
В которой вектор структур MyStruct2.

C++
1
2
3
    struct MyStruct2{
        int i;
    };
Мне нужно создать вектор структур
C++
1
std::vector<MyStruct1> vMyStruct1;
И теперь, когда я делаю вот так
C++
1
vMyStruct1[i].myStruct2.resize(vMyStruct1[i].myStruct2.size() + 1);
У меня вылетает ошибка о переполнении вектора, что делать?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.04.2014, 14:28
Ответы с готовыми решениями:

Можно ли создать вектор, хранящий векторы структур?
Можно ли так писать? vector&lt;vector&lt;struct&gt;&gt; vec; если да то, как задать размер первого и ...

Даны квадратная матрица А порядка n, векторы x и y с n элементами. Получить вектор матрицы А на вектора(х+у)
Даны квадратная матрица А порядка n, векторы x и y с n элементами. Получить вектор матрицы А на...

Ошибка, вектор структур
У меня есть такая структура: struct Card { int dostoinstvo; //достоинство карты char mast;...

Вычислить вектор С, который содержит нечетные элементы вектора А, которых нет в В
Помогите пожалуйста сделал два массива заполнил рандомыми числами, а правильно отсортировать и...

3
365 / 321 / 219
Регистрация: 21.02.2013
Сообщений: 756
23.04.2014, 14:58 2
а как и чем вы заполняете вектор vMyStruct1?
0
0 / 0 / 0
Регистрация: 30.03.2013
Сообщений: 18
23.04.2014, 15:09  [ТС] 3
А разве это имеет значение? Ведь ошибка у меня происходит при ресайзинге vMyStruct1[i].myStruct2
Т.е. я еще не дохожу до заполнения вектора, я пока расширяю место под заполнение, и у меня ошибка выводится.
0
Почетный модератор
Эксперт С++
5850 / 2861 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
23.04.2014, 15:23 4
Лучший ответ Сообщение было отмечено SatanaXIII как решение

Решение

HORHY_SUPER, когда вы создаете вектор, то выделяется память под структуру только верхнего уровня.
Надо в конструктор передавать параметры, чтобы он понимал под что именно и сколько ему надо выделять.

Это конечно плохо, но типа того:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
struct MyStruct2
  {
  int i;
  };
 
struct MyStruct1
  {
  std::vector<MyStruct2> myStruct2;
  int mmm;
  } ms1;
 
/* Конструкторы вектора:
explicit vector (const Allocator& = Allocator());
explicit vector (size_type, const Allocator& = Allocator ());
vector (size_type, const T&, const Allocator& = Allocator());
vector (const vector<T, Allocator>&);*/
 
std::vector<MyStruct1> vMyStruct1( 1, ms1 ); // Типа того
 
vMyStruct1[0].mmm = 99; // Вот здесь в вашем примере уже крашнется
vMyStruct1[0].myStruct2.resize(vMyStruct1[0].myStruct2.size() + 1);
Добавлено через 7 минут
Хотя что-то я сильно загнался. Достаточно просто указать размер вектора:
C++
18
std::vector<MyStruct1> vMyStruct1( 666 );
1
23.04.2014, 15:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.04.2014, 15:23
Помогаю со студенческими работами здесь

Вычислить вектор C, который содержит нечетные элементы вектора A, которых нет в векторе B
1)Даны два вектора целых чисел A и B.Вычислить вектор C, который содержит нечетные элементы вектора...

Заполнить вектор индексами элементов вектора А размерности n, значения которых равны ключу поиска
Программа работает, но выводит первй найденный индекс столько раз, сколь совпадений по ключу поиска...

Тип обьект "вектор" содержит поля: "вектор, егоразмер и идентификатор в символьном виде", методы:"введение вектора, выведение вектора,вычесление.
Тип обьект &quot;вектор&quot; содержит поля: &quot;вектор, его размер и идентификатор в символьном виде&quot;, ...

Заполнить вектор значениями положительных элементов вектора C. Размерность вектора C произвольная
Заполнить вектор значениями положительных элементов вектора C. Размерность вектора C произвольная....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru