Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

проблема с struct : vector<T>

86K
11 декабря 2012 года
frostman
3 / / 11.12.2012
Привет всем! Помогите разобраться с проблемой:
есть у меня структура:

Код:
struct serie : vector<int>
{
    serie(int i);
    void update();
}

serie::serie(int i)
{
    for (int j=0;j=i-1;j++) push_back(j);
}

void serie::update()
{
for(int j=10; j<=size()+10; j++)
    {
        insert(begin(),j);
    }
}

Так вот: конструктор нормально работает, без проблем заполняет вектор-себя:). Но вот когда вызываю метод update - изменения не сохраняются в данном контейнере, то есть после выхода из метода обновления объект остается таким же, как после работы конструктора... В чем может быть причина?
1
11 декабря 2012 года
kot_
7.3K / / 20.01.2000
вероятно не выполняется условие работы цикла
86K
11 декабря 2012 года
frostman
3 / / 11.12.2012
Цитата: kot_
вероятно не выполняется условие работы цикла


проверил, нормально вектор заполнился в цикле, но после выхода - вектор восстановляется к образу конструктора (имеется ввиду после выхода из метода)

446
12 декабря 2012 года
Meander
487 / / 04.09.2011
Трудно понять, зачем вообще все это надо и что должно получиться, но вот так вектор меняется:

 
Код:
void serie::update()
{
  int sz = size()+10; //лучше не использовать в условии останова цикла
  for(int j=10; j<=sz; j++)//меняющийся размер вектора
    insert(begin(),j);
}
и в этом цикле лучше условие переделать:

 
Код:
serie::serie(int i)
{
  for (int j=0;j<=i-1;j++)// j<=i-1 !!!
    push_back(j);
}
и точку с запятой, после объявления структуры поставить, вот так:

 
Код:
struct serie : std::vector<int>
{
       serie(int);
  void update();
};//!!!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог