@ProCxx

Страница 676 из 2477
Сергей
17.03.2017
14:16:35
std::vector<int> vec; auto it = vec.begin(); auto vec2 = vec; И какое отношение имеет итератор it к vec2?
https://ideone.com/O6hc72 Кем будет обновлён адрес на новый вектор у итератора?

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
Смотря для какой цели проверяешь.
Для отправки флага в zip.

Сергей
17.03.2017
14:18:16
Хватит ли sizeof(void*) == 8?
может быть sizeof(size_t ) :)

Friedrich
17.03.2017
14:18:28
Для отправки флага в zip.
А у флага какая семантика?

Gregory
17.03.2017
14:18:38
Который у итератора в ссылке
итератор (выдуманный предлагаемый) будет валилным пока ты не перемещаешь сам вектор

Friedrich
17.03.2017
14:18:53
Хватит ли sizeof(void*) == 8?
Посмотри ещё макросы https://sourceforge.net/p/predef/wiki/Architectures/

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

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

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

и я не хочу такие итераторы

Google
Дед Пегас
17.03.2017
14:22:28
А у флага какая семантика?
хз ваще, я просто просматриваю кодец и наткнулся на странный кусок, который на 32х битах всегда false

Сергей
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 и.т.д

как ни крути

а делать делать это даже на "безопасных" итераторах - лукаво, потом еще по добавленным пройдешься

а если крииическое пездец место - в топку вектор, напиши на сях

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

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

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
Проблема у этих итераторов будет в присваивании
не ну так то можно и не ссылку а указатель на сам вектор держать

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

Alexander
17.03.2017
16:40:37
представь, что он там есть в лямбде и в локальном скоупе main) В принципе, проблему уже обговорили)
Если мы обьявим этот новый итератор на вектор внутри лямбды, то всё будет работать, так как имеем внутри лямбды копию вектора

представь, что он там есть в лямбде и в локальном скоупе main) В принципе, проблему уже обговорили)
Можете наваять пример, который сломает новые итераторы и при этом будут работать текущие итераторы? Просто из Вашего примера я не понял, в каком месте буду ломаться предлагаемые итераторы и не будут текущие

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
вообще это какой то "презерватив" для тех кто не осилил алгоритмы из stl
ну давай тогда vector::at() тоже презервативом называть

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

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

Alex Фэils?︙
17.03.2017
16:59:41
А что будет на Питерской встрече?
посиделка в кафе/антикафе/баре. в зависимости от пожеланий

Страница 676 из 2477