
Сергей
17.03.2017
14:16:35

Gregory
17.03.2017
14:16:46

Дед Пегас
17.03.2017
14:17:03
Вопросец. Как нонче наиболее корректней проверять битность системы?
Во время компиляции.

Google

Дед Пегас
17.03.2017
14:17:14
Хватит ли sizeof(void*) == 8?

Friedrich
17.03.2017
14:17:35
Смотря для какой цели проверяешь.

Evgeniy
17.03.2017
14:17:48

Дед Пегас
17.03.2017
14:18:10

Сергей
17.03.2017
14:18:16

Friedrich
17.03.2017
14:18:28

Gregory
17.03.2017
14:18:38

Friedrich
17.03.2017
14:18:53

Gregory
17.03.2017
14:18:56
как только переместил сам вектор - усе

Friedrich
17.03.2017
14:18:59
Я не уверен, какой способ лучше — макросами или через sizeof. Сам понимаешь, в обоих случаях стандарт нам ничего не обещает.

Evgeniy
17.03.2017
14:19:25

Gregory
17.03.2017
14:19:41
мне ненравится этот итератор (предлагаю то не я)
и я не хочу такие итераторы

Google

Дед Пегас
17.03.2017
14:22:28

Сергей
17.03.2017
14:36:18
если _ITERATOR_DEBUG_LEVEL стоит дефолтный - всякие ненужные проверки
в общем залез в исходники https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/stl_iterator.h#L760
Никаких проверок не увидел. Затем https://godbolt.org/ показал одинаковый код для итераторов и обычного разыменования vector::data() на clang и gcc. Потом посмотрел про iterator_debug_level, оказывается это фича msvc (https://msdn.microsoft.com/en-us/library/aa985982.aspx)

Gregory
17.03.2017
14:39:51
ну да, текущие итераторы просто обертка над указателем на адрес позиции
дешево и сердито

Aldar
17.03.2017
14:41:36
зато быстро

Gregory
17.03.2017
14:41:40
а то что прндлагал тот человек куда дороже

Aldar
17.03.2017
14:41:57
хочешь безопасно - запили свои итераторы))

Gregory
17.03.2017
14:43:07
а безопасно не будет
просто в других местах будут проблемы
идеальное удаление из вектора это перемещение элементов и подрезка вектора
идеальное добавление это новый вектор с резервом под старый и новые элементы
идеальное удаление и добавление одновременно - си подобное, не использование методов вектора а модификация памяти - memmove и.т.д
как ни крути
а делать делать это даже на "безопасных" итераторах - лукаво, потом еще по добавленным пройдешься
а если крииическое пездец место - в топку вектор, напиши на сях

Tema
17.03.2017
14:51:54

Gregory
17.03.2017
14:52:28
?
на каждой строчке

Alexander
17.03.2017
15:13:34
сорри, у меня митинг через 2 минуты

Tema
17.03.2017
15:16:13

Evgen
17.03.2017
15:22:48
._.

Google

Evgen
17.03.2017
15:23:00
О, я чота пропустил
> 1002 members

【neuro
17.03.2017
15:33:25
Косплей дня: Элизабет из BioShock Infinite | Новости | Канобу
http://kanobu.ru/news/kosplej-dnya-elizabet-iz-bioshock-infinite-390198/?utm_source=twitter.com&utm_medium=social&utm_campaign=segodnya-v-nashey-rubrike-kospley-dnya-pr

Alex Фэils?︙
17.03.2017
15:35:51
27 марта 2017 года в главном офисе Яндекса (в Москве, ул Льва Толстого, д.16, третий подъезд, конференц-зал «Синий Кит») пройдет Открытая встреча Национальной рабочей группы по стандартизации C++. В программе планируются доклады о нововведениях в C++17, о будущих возможностях ("почему модули так долго делают") и после них будет скайп-беседа с Гором Нишановым, сотрудником Microsoft.
Посмотреть подробнее о мероприятии можно по ссылкам:
https://stdcpp.ru/blog/27-marta-obsuzhdaem-novosti-vstrechi-iso-c – анонс мероприятия на stdcpp.ru
https://events.yandex.ru/events/cpp-party/27-march-2017/ – анонс, программа и регистрация на events.yandex.ru
#stdcpp #isocpp #cppparty #yandex

Stanislav
17.03.2017
15:36:26


Alex Фэils?︙
17.03.2017
15:41:13
Какое число выберем для Питерской встречи?
Результаты:
22 марта (0):
23 марта (0):
24 марта (4): kenny1847 AndreiKr crackedmind Anton_Kashcheev
Любое (3): Kotbegemot amyasnikov NeonLost
Предложения о месте встречи в Питере можно кидать с хештегом #procxxbdaymeet , чтобы я и администрация могли проще их искать.
Итак, друзья, у нас сейчас планируется целых два мероприятия. Первое – встреча участников в Питере, 21 марта. Эта встреча будет совмещена с митапом C++ Spb User Group. Подробности – по ссылке: https://www.meetup.com/St-Petersburg-CPP-User-Group/events/237846550/?rv=me1&_xtd=gatlbWFpbF9jbGlja9oAJDE1ZWE3OWVjLTA4YWItNDBmZC1iNjFmLWNmN2VkNmEzZmI3OQ&_af=event&_af_eid=237846550&https=on
И второе мероприятие – встреча Национальной группы комитета по стандартизации C++ в офисе Яндекса (информация доступна по ссылке https://t.me/ProCxxNews/27)
Сообщение будет обновляться по мере поступления информации.
#meet #procxxbdaymeet

Alexander
17.03.2017
16:00:41

Gregory
17.03.2017
16:13:22
автор вопроса и предложения по итераторам увы слился

Alexander
17.03.2017
16:15:35
точнее, чтобы итератор стал указывать на другой контейнер. Текущие итераторы позволяют такое делать, предлагаемые - как я понял, не могут в такое так просто.

Alexander
17.03.2017
16:17:06
И да, выходит дороже, как уже неоднократно упоминали выше

Gregory
17.03.2017
16:17:46

Alexander
17.03.2017
16:18:32

Сергей
17.03.2017
16:40:17
а где здесь итератор?
представь, что он там есть в лямбде и в локальном скоупе main) В принципе, проблему уже обговорили)

Alexander
17.03.2017
16:40:37

Сергей
17.03.2017
16:44:44

Google

Сергей
17.03.2017
16:45:02
сейчас не за компом, не могу внятно отвечать)

Alexander
17.03.2017
16:45:02

Gregory
17.03.2017
16:48:05
ну тут же все очевидно, "оффсет итераторы" (пусть оно так чтоли называется), будут ломаться только тогда когда по адресу вектора больше нет самого вектора - всё.
ну и по сути это тогда когда обьект закончил свой жизненный цикл.

Admin
ERROR: S client not available

Gregory
17.03.2017
16:50:11
я ранее говорил еще про "перемещение" но нет я был не совсем прав, после перемещения этот вектор все еще будет существовтаь просто станет пустым.

Alexander
17.03.2017
16:51:23
именно. При перемещении вектора и те, и другие итераторы ломаются, так что тут всё окей
Но мы достигаем этого путём замедления самих итераторов

Gregory
17.03.2017
16:51:49
ага

Alexander
17.03.2017
16:52:38
так как обращение к памяти уже будет выглядеть как-тотак: идём по указателю на обьект вектора, получаем адрес первого элемента, потом к адресу прибавляем оффсет, и вуаля - обратились
но надо отметить, что вот это обращнеие к обьекту вектор и получение вектор->data() хорошо кешится

Gregory
17.03.2017
16:53:10
а еще всегда проверочка
что внезапно оффсет вне диапазона

Alexander
17.03.2017
16:53:41
нет, не нужна

Gregory
17.03.2017
16:53:41
вдруг элементы удалили

Alexander
17.03.2017
16:53:52
стандартные итераторы этого не делают
мы просто добиваемся итератора, который не инвалидируется при вставке элемента в вектор
про удаление речи не шло

Gregory
17.03.2017
16:54:29
ну так тот человек хотел безопасные итераторы чтобы в цикле удалять элементы
или частный случай только добавления был?

Google

Alexander
17.03.2017
16:55:06
не, про проверку забудь - это просто эмулруем поведение vector::at()

Сергей
17.03.2017
16:55:28
У вас есть какая-либо имплементация этих итераторов?)

Alexander
17.03.2017
16:55:48
нет, но мы все прекрасно понимаем, как они были бы написаны
указатель на обьект вектора + оффсет

Gregory
17.03.2017
16:56:45
даешь +2 итератора :D
push_safe_iterator
erase_safe_iterator
:D

Alexander
17.03.2017
16:56:46
операции + - ++ — думаю очевидны
не ну, это конечно можно, но нужно проводить тесты, стоит ли овчинка выделки

Gregory
17.03.2017
16:57:44
вообще это какой то "презерватив" для тех кто не осилил алгоритмы из stl
типа remove_if и подобного

Alexander
17.03.2017
16:58:06
кто хочет в безопасность - пишет at(), кто в скорость - пишет operator[]

Gregory
17.03.2017
16:58:53
ну тут да, философия уже )

Daniil
17.03.2017
16:59:13

Alex Фэils?︙
17.03.2017
16:59:41