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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
HORHY_SUPER
0 / 0 / 0
Регистрация: 30.03.2013
Сообщений: 18
#1

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

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

Как реализовать такое дело:
Есть структура 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)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2014, 14:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вектор структур, в которых также векторы. Ошибка переполнения вектора (C++):

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

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

Заданный вектор А, состоящий из n элементов. Переставить компоненты вектора, размещенные после самого элемента вектора А - C++
Заданный вектор А, состоящий из n элементов. Переставить компоненты вектора, размещенные после самого элемента вектора А на начало, а...

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

Ошибка переполнения массива - C++
Здравствуйте. Задача легкая,нужно создать массив из 1000000 элементов,и найти 1000001,и вывести сообщение что не найден такой элемент. Но...

Ошибка переполнения буфера - C++
При первом запуске програма работает, после второго появляеться ошибка переполнения буфера. В чем дело?#include &lt;iostream&gt; #include...

3
jurok_85
241 / 225 / 78
Регистрация: 21.02.2013
Сообщений: 520
Завершенные тесты: 1
23.04.2014, 14:58 #2
а как и чем вы заполняете вектор vMyStruct1?
0
HORHY_SUPER
0 / 0 / 0
Регистрация: 30.03.2013
Сообщений: 18
23.04.2014, 15:09  [ТС] #3
А разве это имеет значение? Ведь ошибка у меня происходит при ресайзинге vMyStruct1[i].myStruct2
Т.е. я еще не дохожу до заполнения вектора, я пока расширяю место под заполнение, и у меня ошибка выводится.
0
SatanaXIII
Супер-модератор
Эксперт С++
5618 / 2653 / 246
Регистрация: 01.11.2011
Сообщений: 6,549
Завершенные тесты: 1
23.04.2014, 15:23 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2014, 15:23
Привет! Вот еще темы с ответами:

Вектор структур - C++
Здравствуйте, есть код с вектором структур #include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;cstdlib&gt; #include &lt;vector&gt; #include...

вектор структур - C++
допустим есть структура struct human { name; age; //..... } объявим вектор std::vector&lt;human&gt; vec как сделать поиск...

Инициализация вектора структур - C++
Не могу инициализировать вектор. struct cmd{ QString name; qint16 code; }; QVector &lt;cmd&gt; commands={ ...

Индексация вектора структур - C++
Здравствуйте! Возник следующий вопрос: Почему при попытке создания массива индексов (indexArray) не выходит сохранить в него...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru