Название: Не могу добраться до итератора в шаблонном векторе std::vector<T> Отправлено: nvrrus от Октябрь 24, 2011, 17:37 Здравствуйте, уважаемые форумчане. Подскажите, пожалуйста, может кто сталкивался с такой проблемой.
Пишу обертку над std::vector в QT так: Код: template<typename T > Пытаюсь реализовать метод erase, связав его с итератором на std::vector<T> Ругается - 'std::vector<T>::iterator' - is not a type Что сделать, чтобы реализовать функцию erase с итераторами? Как подружить класс обертку с итераторами? Заранее большое спасибо! Название: Re: Не могу добраться до итератора в шаблонном векторе std::vector<T> Отправлено: Igors от Октябрь 24, 2011, 19:12 Ну как бы "это 2 разных T" :) Но зачем Вам так делать? Ведь чтобы позвать такой erase нужно будет указать тип итератора - теряется весь смысл/общность template. Лучше по индексу
Код
Название: Re: Не могу добраться до итератора в шаблонном векторе std::vector<T> Отправлено: enumerator от Октябрь 24, 2011, 20:08 Если я не ошибаюсь, то так:
Код: void erase( typename std::vector<T>::iterator it ) Название: Re: Не могу добраться до итератора в шаблонном векторе std::vector<T> Отправлено: nvrrus от Октябрь 27, 2011, 17:20 Спасибо большое, уважаемые Igors и enumerator. Оба фрагмента рабочие.
Только я избавился от использования итераторов. Там где они нужны использую std::vector, вытаскивая его из прослойки. Название: Re: Не могу добраться до итератора в шаблонном векторе std::vector<T> Отправлено: KrupaKarlo от Декабрь 22, 2011, 13:44 Здравствуйте, уважаемые форумчане. Подскажите, пожалуйста, может кто сталкивался с такой проблемой. Пишу обертку над std::vector в QT так: Простите можно узнать зачем. QVector совместим с std::vector юзайте его. Есть еще бустовский вариант зачем велосипед? Название: Re: Не могу добраться до итератора в шаблонном векторе std::vector<T> Отправлено: Tonal от Декабрь 23, 2011, 08:24 Если я не ошибаюсь, то так: Ну и было бы правильно этот std::vector<T>::iterator затайпдефить в публичной части класса.Код: void erase( typename std::vector<T>::iterator it ) Иначе как-то не совсем очевидно получается. :) |