Я могу увеличить итератор, просто добавив число?

Вот еще одна вещь о синглетах, о которой еще никто не говорил.

В большинстве случаев «синглтонность» - это деталь реализации некоторого класса, а не характеристика его интерфейса. Обращение Контейнер Контроля может скрыть эту характеристику от пользователей класса; вам просто нужно пометить ваш класс как одиночный (например, с аннотацией @Singleton в Java) и все; IoCC сделает все остальное. Вам не нужно предоставлять глобальный доступ к вашему экземпляру синглтона, потому что доступ уже управляется IoCC. Таким образом, нет ничего плохого в IoC Singletons.

Предполагается, что GoF Singletons в отличие от IoC Singletons предоставляют «единство» в интерфейсе с помощью метода getInstance (), и поэтому они страдают от всего, что сказано выше.

41
задан Frank 23 June 2009 в 14:55
поделиться

2 ответа

Он работает, если итератор является итератором с произвольным доступом, каковыми являются итераторы вектора (см. ссылку ). Функцию STL std :: advance можно использовать для продвижения универсального итератора, но поскольку она не возвращает итератор, я предпочитаю использовать +, если он доступен, потому что он выглядит чище.

C ++ 11 note

Теперь есть std :: next и std :: prev , которые действительно возвращают итератор, поэтому, если вы работаете в шаблоне, вы можно использовать их для улучшения универсального итератора и при этом иметь чистый код.

46
ответ дан 27 November 2019 в 00:52
поделиться

Работает с итераторами произвольного доступа. В общем, вы можете взглянуть на std :: advance , который является более общим. Просто убедитесь, что понимаете последствия использования этого шаблона функции для производительности.

2
ответ дан 27 November 2019 в 00:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: