Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проход списка list не с начала, STL 
V
    Опции темы
ksili
Дата 5.3.2009, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: нет
Всего: 17



Есть список std::list. Иногда надо обходить его итератором не с начала, а допустим с 3-го элемента. Как это реализовать?
Пока придумал так:
Код

int i = 0;
for (list<Rule>::iterator it = alist.begin(); it != alist.end(); it++)
        {
            i++;
                 if (i > 3)
            {
                .......
            }
        }

Но может есть и какая-то встроенная в STL возможность сделать это? Что-нибудь типа 
Код

for (list<Rule>::iterator it = alist.begin() + 3; it != alist.end(); it++)

или
Код

for (list<Rule>::iterator it = alist[3]; it != alist.end(); it++)



--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Lazin
Дата 5.3.2009, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 27
Всего: 154



Цитата(ksili @  5.3.2009,  08:56 Найти цитируемый пост)
for (list<Rule>::iterator it = alist.begin() + 3; it != alist.end(); it++)

если-бы у листа был RandomAccessIterator, то это прокатило-бы, может использовать deque?

Добавлено через 1 минуту и 8 секунд
конечно-же тут не хватает проверки размера контейнера, так-как если в alist меньше 3х элементов, то...
PM MAIL Skype GTalk   Вверх
vinter
Дата 5.3.2009, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 8
Всего: 56



Код

std::list<Rule>::iterator it = alist.begin();
std::advance(it, 3);
for ( ; it != alist.end(); it++)
...



--------------------
Мой блог
PM MAIL WWW   Вверх
ksili
Дата 5.3.2009, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: нет
Всего: 17



vinter, спасибо.

Можно ли это как-то использовать и для обрезания с конца? т.е. чтобы проходить список не до последнего элемента?

Добавлено через 10 минут и 26 секунд
Цитата(ksili @  5.3.2009,  13:56 Найти цитируемый пост)
Можно ли это как-то использовать и для обрезания с конца? т.е. чтобы проходить список не до последнего элемента?

кажись так можно:
Код

    list<Rule>::iterator it = alist.begin();
    list<Rule>::iterator it2 = alist.end();
    std::advance(it2, -3);

    for (; it != it2; it++)
        {
        ....
        }



--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
vinter
Дата 5.3.2009, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 8
Всего: 56



Цитата(ksili @  5.3.2009,  10:56 Найти цитируемый пост)
кажись так можно:

угу, для Random и Bidirectional


--------------------
Мой блог
PM MAIL WWW   Вверх
bsa
Дата 10.3.2009, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196




M
bsa
ksili, если ответ на вопрос получен, то пометь тему решенной

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0522 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.