IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Проблема с вектором из СТЛ, С++
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 68
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


vector<Nabor> mas;

Вектор состоит из структур типа:
Код

// Структура, описывающая одну комбинацию
struct Nabor{
    char codes[32];
    bool flag;
    bool operator <(const Nabor &b)const
    { return count(codes)<count(b.codes);}
    //~Nabor(){delete [] codes;}
};


Некоторые фрагменты не показываю, а то многовато будет)). Заполняю вектор вроде правильно, потому как я в конце программы его вывожу и все нормально....


Но вот в этом фрагменте он почему то не работает(. При пошаговом выполнении итератор "к" ничему не равен (выделенное выражение) и дальше все(((, а еще почему то не могу при пошаговой отладке посмотреть значения вектора, это нормально?.
Этот фрагмент находится в главной функции майн.
Moment - это моя функция которая возращает целое.

Код

vector<Nabor>::iterator k,j;[code]
    
k=mas.begin();
Код
int level=count(k->codes);
    cout<<k->codes;
    while (k!= mas.end()){
        
        j=k+1;
//        cout<<j->codes;
        while ((j!=mas.end())&&(count(j->codes)<=(level+1))){
            if (count(j->codes)==(level+1)){
                int t=Moment(k->codes, j->codes);
                if (t==1) cout<<endl<<t<<endl;
                cout<<'btyu';
            }
            j=j+1;
        }
        k=k+1;
    }


Сообщение отредактировано: Scorp_Freeman -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






blink.gif Что, и даже сразу после получения итератора
cout << k->codes;
тоже не печатается? "Что-то неладно в Датском королевстве" (С)
А что для *k отладчик показывает перед выполнением этой строки? Желательно развернуть все дерево для *k, и сделать скриншот.

А вообще - напиши маленькую тестовую программу: используй vector<int>, и на нем проверь работоспособность итератора. Что-то слишком странное происходит...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 68
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


smile.gif упс, сорри. Печатает просто не заметил в этих дебрях))) спасибо smile.gif


Вот просто мне не нравится что при пошаговой не можно просмотреть значения параметров ((((

Добавлено через 4 мин.
А вот скрины:



Сообщение отредактировано: Scorp_Freeman -


Эскизы прикрепленных изображений
Прикрепленное изображение Прикрепленное изображение Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 68
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


По ходу дела возник еще 1 вопросик smile.gif Вот у меня есть вектор векторов (vector<vector<int>>) который представляет собой массив числовых последовательностей. Я пытаюсь удалить все последовательти которые содержат любую другую. Хотел сделать в цикле вот так:

Код
vector<vector<int>>::iterator u;
        u = bufs.begin();
        while (u != bufs.end()){
            vector<vector<int>>::iterator t;
            t = u;
            t++;
            while (t != bufs.end()){
                if (((*u).size() > (*t).size())&& search((*u).begin(), (*u).end(), (*t).begin(), (*t).end()) != (*u).end())
                    bufs.erase(u);
                if (((*t).size() > (*u).size())&& search((*t).begin(), (*t).end(), (*u).begin(), (*u).end()) != (*t).end())
                    bufs.erase(t);
                /*if ( ((*u).size() == (*t).size()) && equal((*u).begin(), (*u).end(), (*t).begin()) );
                    bufs.erase(t);*/
                
            t++;
            }
        u++;
        
        }


Но в процессе выполнения выдает иногда фатальную ошибку :
Microsoft Visual Studio C Runtime Library has detected a fatal error in Version_1_33.exe.

Press Break to debug the program or Continue to terminate the program.

Как можно удалять элементы вектора в цикле ? )
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 4.05.2024 11:28
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name