|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
подозреваю, что нельзя делать .push_back() тому же вектору, который итерируешь... он тогда segfault выплёвывает Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
ф-я запускается в цикле конечно когда в векторе набирается ~1 млн, то вылетает segfault а вот при такой постановке оно едет дальше, но тормозит с каждой итерацией и на 150 лямах уже раз в 2 секунды итерирует но это не важно важно - segfault из-за чего? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
т.е. я тут другой вектор создаю и оттуда добавляю в этот ПОСЛЕ итерации ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2019, 18:10 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
https://en.cppreference.com/w/cpp/container/vector/push_back If the new size() is greater than capacity() then all iterators and references (including the past-the-end iterator) are invalidated. Otherwise only the past-the-end iterator is invalidated. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2019, 18:39 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
так это же означает, что вот там было 8 эл-тов, а когда вставляют 9й, то он переделывается на 16 эл-тов потом на 32 и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2019, 20:12 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
Тут надо либо блокироваться либо версионироваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 00:48 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
не понял? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 09:19 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
полудухтак это же означает, что вот там было 8 эл-тов, а когда вставляют 9й, то он переделывается на 16 эл-тов Учти что 8 исчезает и появляется 16 новых, куда копируется исходные 8. А твой цикл упирается в 9-й несуществующий, который после 8-го исчезнувшего. PS Поизучай что такое указатели. Явно их тут нет, но "под капотом" именно они. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 09:58 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
так этим всем .push_back() занимается, где у меня цикл упирается? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 10:09 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
полудухтак этим всем .push_back() занимается, где у меня цикл упирается? Да, v2.push_back(0) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 10:19 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
так мы в итоге пришли к тому, что авторподозреваю, что нельзя делать .push_back() тому же вектору, который итерируешь... ? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 11:44 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
полудухне понял? Обычно структуры данных (списки, деревья, хеш таблички) не любят модификаций. Они перестраивают свою внутреннюю структуру когда ты что- то добавляешь или удаляешь. Поэтому итератор по старой структуре будет сломан. И его надо заново пересоздать. Коробочное решение этого вопроса - это версионные структуры данных. Или запрет на работу push или итератора взаимно. По сути блокировки. И ещё. С точки зрения бд в примере с массивом ты хочешь фантомного чтения. Не знаю хорошо это или плохо для твоей задачи. Но надо смотреть смыслы . Может тут не массив а очередь. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 14:17 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
полудухтак мы в итоге пришли к тому, что авторподозреваю, что нельзя делать .push_back() тому же вектору, который итерируешь... ?Да, нельзя. А какое поведение вы ожидаете? По добавленным элементам цикл тоже должен пройти? Вот в list например можно добавлять по ходу итерирования ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 14:41 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
так ведь вектор вроде задуман так, что в конец ему добавлять можно безо всяких "перестроек" и замечу, что он таки растёт БЕЗ приключений до определённого момента а потом падает и вот причина падения конкретно в этом месте непонятна память то ведь есть maytonОни перестраивают свою внутреннюю структуру когда ты что- то добавляешь или удаляешь. таки не совсем... они же динамические они выделяют память под определённое кол-во ячеек и ты можешь пихать в эти заготовленные ячейки новые значения когда кол-во заканчивается, то выделяется ещё столько же (т.е. по окончании умножается на 2) хотя конечно можно и железно прописать конкретное кол-во эл-тов, где чётко сказано, что больше не будет но это не тот случай ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 15:11 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
полудухтак ведь вектор вроде задуман так, что в конец ему добавлять можно безо всяких "перестроек" Можно, если к элементу вектора обращаться по индексу, а не через итератор. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 15:52 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
полудух, Для хеш-таблички это неверно. Да и нет у нее метода push_back. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 16:01 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
полудухтак ведь вектор вроде задуман так, что в конец ему добавлять можно безо всяких "перестроек" и замечу, что он таки растёт БЕЗ приключений до определённого момента а потом падает и вот причина падения конкретно в этом месте непонятна Читай как устроены указатели и выделение памяти (new), тогда будет понятно. Тут никто не будет лекцию читать про базовые основы С++, для этого учебники есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 16:36 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
Dima Tполудухтак ведь вектор вроде задуман так, что в конец ему добавлять можно безо всяких "перестроек" и замечу, что он таки растёт БЕЗ приключений до определённого момента а потом падает и вот причина падения конкретно в этом месте непонятна Читай как устроены указатели и выделение памяти (new), тогда будет понятно. Тут никто не будет лекцию читать про базовые основы С++, для этого учебники есть. у меня 20 файлов с инфой про указатели, там есть всё что нужно нечего сказать, вали мимо. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 18:12 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
полудухтак ведь вектор вроде задуман так, что в конец ему добавлять можно безо всяких "перестроек" и замечу, что он таки растёт БЕЗ приключений до определённого момента а потом падает и вот причина падения конкретно в этом месте непонятна память то ведь есть maytonОни перестраивают свою внутреннюю структуру когда ты что- то добавляешь или удаляешь. таки не совсем... они же динамические они выделяют память под определённое кол-во ячеек и ты можешь пихать в эти заготовленные ячейки новые значения когда кол-во заканчивается, то выделяется ещё столько же (т.е. по окончании умножается на 2) хотя конечно можно и железно прописать конкретное кол-во эл-тов, где чётко сказано, что больше не будет но это не тот случайНу нельзя же увеличить ранее выделенный блок памяти. А вектор должен размещаться в непрерывном куске памяти. Так что выделяется новый блок большего размера, в него копируются значения из старого, и старый блок освобождается. А итератор продолжает указывать на освобожденный блок. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 18:51 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
BarloneА итератор продолжает указывать на освобожденный блок. Итератор - класс. Он не обязан инкапсулировать указатель, ему хватит и смещения. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 19:41 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
полудухDima Tпропущено... Читай как устроены указатели и выделение памяти (new), тогда будет понятно. Тут никто не будет лекцию читать про базовые основы С++, для этого учебники есть. у меня 20 файлов с инфой про указатели, там есть всё что нужно нечего сказать, вали мимо. Удачи в беге по граблям ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 19:47 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
maytonДля хеш-таблички это неверно Не совсем: удали элемент, куда смотрит итератор и следующий будет неизвестен. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 20:12 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovBarloneА итератор продолжает указывать на освобожденный блок. Итератор - класс. Он не обязан инкапсулировать указатель, ему хватит и смещения. Не обязан конечно, но может. И во многих реализациях итератор по вектору - это именно указатель. Сказано же - при реаллокации итераторы инвалидируются. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 20:12 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
Barloneполудухтак ведь вектор вроде задуман так, что в конец ему добавлять можно безо всяких "перестроек" и замечу, что он таки растёт БЕЗ приключений до определённого момента а потом падает и вот причина падения конкретно в этом месте непонятна память то ведь есть пропущено... таки не совсем... они же динамические они выделяют память под определённое кол-во ячеек и ты можешь пихать в эти заготовленные ячейки новые значения когда кол-во заканчивается, то выделяется ещё столько же (т.е. по окончании умножается на 2) хотя конечно можно и железно прописать конкретное кол-во эл-тов, где чётко сказано, что больше не будет но это не тот случайНу нельзя же увеличить ранее выделенный блок памяти. А вектор должен размещаться в непрерывном куске памяти. Так что выделяется новый блок большего размера, в него копируются значения из старого, и старый блок освобождается. А итератор продолжает указывать на освобожденный блок. ну если бы в этом была проблема, он бы сразу упал, не? Dima Tполудуху меня 20 файлов с инфой про указатели, там есть всё что нужно нечего сказать, вали мимо. Удачи в беге по граблям из тебя помощник, как из пятого колеса телега по граблям я бегать люблю и практикую потому что без грабель ты никогда не станешь специалистом не собрав ВСЕ ошибки ты никогда не узнаешь, что тебя ждёт, если сделать это и то это чуть ли не главная часть учебного процесса - грабли собирать кроме того, когда ты сам спец, ошибок поубавится, но вот молодняк рядом может под шумок угробить и тебя заодно так что грабли рулят не надо меня ими пугать я не раз проходил путь с полного нуля в теме до какого-никакого спеца и знаю, что такое учёба меня жутко бодрит сам процесс обучения, я люблю грабли а вот что меня раздражает, так это когда некий "гуру" пытается самоутвердиться за твой счёт. про указатели 3.14здёж нельзя разобраться в подобной ошибке просто узнав, что такое динамическая память и чем указатель от ссылки отличается я читал про них всё и выжимка из доков составила аж 56 кб так что не надо мне ля-ля. Нечего сказать пройди мимо. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 20:41 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
полудухDima Tпропущено... Удачи в беге по граблям из тебя помощник, как из пятого колеса телега по граблям я бегать люблю и практикую потому что без грабель ты никогда не станешь специалистом не собрав ВСЕ ошибки ты никогда не узнаешь, что тебя ждёт, если сделать это и то это чуть ли не главная часть учебного процесса - грабли собирать кроме того, когда ты сам спец, ошибок поубавится, но вот молодняк рядом может под шумок угробить и тебя заодно так что грабли рулят не надо меня ими пугать я не раз проходил путь с полного нуля в теме до какого-никакого спеца и знаю, что такое учёба меня жутко бодрит сам процесс обучения, я люблю грабли а вот что меня раздражает, так это когда некий "гуру" пытается самоутвердиться за твой счёт. про указатели 3.14здёж нельзя разобраться в подобной ошибке просто узнав, что такое динамическая память и чем указатель от ссылки отличается я читал про них всё и выжимка из доков составила аж 56 кб так что не надо мне ля-ля. Нечего сказать пройди мимо. Эх, был бы ты подобрее, я бы тоже подобрее ответил. В конце концов у тебя проблема и ты не понимаешь как ее решать. С++ это не высокоуровневый ЯП, тут есть куча условностей, которые надо соблюдать, а откуда они взялись надо просто знать. PS Рули граблями, одень каску чтоб не сильно било, искренние соболезнования твоему работодателю. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 20:53 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
полудухнельзя разобраться в подобной ошибке просто узнав, что такое динамическая память и чем указатель от ссылки отличается Это говорит о том что у тебя каша в голове. Объясняю на примере: 8 орехов лежат в ячейках 260-267, в процессе пересчета добавили орех и т.к. ячейка 268 занята, то все орехи переложили в ячейки 100500-100508, дальше понятно? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 21:17 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
полудуха вот что меня раздражает, так это когда некий "гуру" пытается самоутвердиться за твой счёт. Извиняюсь что пытался помочь, больше не буду. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 21:32 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
Dima TmaytonДля хеш-таблички это неверно Не совсем: удали элемент, куда смотрит итератор и следующий будет неизвестен. Я комментировал добавление нового элемента. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 22:09 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
я тоже спрошу segfault в данном случае это fragmentation of the free store? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 22:29 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
Dima TЭх, был бы ты подобрее, я бы тоже подобрее ответил. В конце концов у тебя проблема и ты не понимаешь как ее решать. С++ это не высокоуровневый ЯП, тут есть куча условностей, которые надо соблюдать, а откуда они взялись надо просто знать. опять ля-ля "я бы, да кабы, если бы" - что ты обиженную девочку строишь люди ходят на форумы, чтобы повышать квалификацию, или хотя бы дать пищу мозгу когда они видят интересную им проблему, они разминают об неё мозги и получают с этого профит: во1, для себя - обновлённый опыт во2, помогли кому-то, а это + в карму и к ЧСВ а НЕинтересные проблемы они игнорируют но они не говорят: "я бы помог, если..." или "вот тебе квест, иди выполняй, потом спляшешь, помоешь окна, а я подумаю..." или "да ты нихера не шаришь, ты нуб, ты зачем вообще пытаешься разобраться, надо просто знать..." авторВ конце концов у тебя проблема и ты не понимаешь как ее решать. С++ это не высокоуровневый ЯП, тут есть куча условностей, которые надо соблюдать, а откуда они взялись надо просто знать. спасибо, дядь, ты лучший, открыл мне глаза наконец-то PS Рули граблями, одень каску чтоб не сильно било, искренние соболезнования твоему работодателю. я сам работодатель. Dima Tполудухнельзя разобраться в подобной ошибке просто узнав, что такое динамическая память и чем указатель от ссылки отличается Это говорит о том что у тебя каша в голове. Объясняю на примере: 8 орехов лежат в ячейках 260-267, в процессе пересчета добавили орех и т.к. ячейка 268 занята, то все орехи переложили в ячейки 100500-100508, дальше понятно? полудухну если бы в этом была проблема, он бы сразу упал, не? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 10:58 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
mini.weblabя тоже спрошу segfault в данном случае это fragmentation of the free store? нет, там что-то другое, уже не помню ( что-то про 4 одну ошибку я разобрал и пофиксил - нельзя вставлять значение в ячейку вектора, которой не существует - тоже отваливается без описания ошибки но там чё-то другое было оно отваливалось при достижении определённого числа ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 11:04 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
полудухBarloneпропущено... Ну нельзя же увеличить ранее выделенный блок памяти. А вектор должен размещаться в непрерывном куске памяти. Так что выделяется новый блок большего размера, в него копируются значения из старого, и старый блок освобождается. А итератор продолжает указывать на освобожденный блок. ну если бы в этом была проблема, он бы сразу упал, не? Не. С чего бы ему сразу падать? Память то доступна. А что в ней уже не вектор - это не сразу скажется. И вообще от реализации зависит - в какой именно код for по контейнеру компилируется... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 15:21 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
полудух, может тебе всё таки подойдет Queue? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 15:28 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
полудухну если бы в этом была проблема, он бы сразу упал, не? Не. Не хочешь вникать в причины - не спрашивай почему упал, запомни что так нельзя делать и больше не делай. А то что упал - это счастье, иначе бы пошел мусор на вход твоей проги и ты бы устал искать откуда мистика идет. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 19:59 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
BarloneПамять то доступна. А что в ней уже не вектор - это не сразу скажется. хм, фигово ( вроде в цикле находимся, да и память есть, а тут UB... maytonполудух, может тебе всё таки подойдет Queue? не, надо доступ по ключу да я уже прикрутил тот второй способ я сразу понял, что нельзя делать .push_back() тому же вектору, который итерируешь а для понятия деталей походу надо написать пару сотен К строк ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 21:43 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
полудух, из твоей хотелки можно сделать предположение что у тебя - конкурентный доступ к структуре данных из 2х независимых потоков. Один хочет видеть итератор. Второй хочет добавлять элемент. Есть миллион и маленькая тележка способов как решить твою задачу. Но я убежден что правильный ее вариант решения на самом деле более простой. И он связан с пересмотром алгоритма или подхода к твоей задаче. И ломать об колено итератор не нужно будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 21:48 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
полудухне, надо доступ по ключу Используй std::deque. Ещё и работать будет быстрее. std::vector - дебильный контэйнер для Basic-писателей. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 09:23 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
mayton, ну я так и сделал всем спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 12:45 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
полудух, Подскажи, как в векторе менять значения в функции foor(auto i : vertices) { i.x = 12345 ..... наа выходе из функции все теряеттсся f(std::vector<glm::vec3> & vertices) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2019, 14:54 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
PetroNotC Sharpfoor(auto i : vertices) { i.x = 12345 Тут ты меняешь во временной переменной, а не в векторе. Используй ссылку Код: plaintext 1.
https://stackoverflow.com/questions/29859796/c-auto-vs-auto ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2019, 15:01 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
Dima T, Блин, везде ставить)) Ты гений. Заработало) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2019, 15:05 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
OoCcполудухне, надо доступ по ключу Используй std::deque. Ещё и работать будет быстрее. std::vector - дебильный контэйнер для Basic-писателей.А какие преимущества у deque в ключе рассматриваемой темы? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2019, 16:13 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
AmKad, Никаких) Если надо по ключу, то std::map вестимо. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2019, 17:01 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
PetroNotC SharpAmKad, Никаких) Если надо по ключу, то std::map вестимо. но он дороже вектора и рассчитан на string в кач-ве ключей а когда цифровые индексы, то достаточно массива, который в C++ заменён на вектор (который дешевле всего сейчас походу) хотя я видел кто-то массивы юзает ещё... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2019, 19:09 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
кстати, зачем пишут auto& var или auto* var ? ведь ссылка относится к переменной и когда позже будут вызывать var (без типа), то так: *var ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2019, 19:12 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
полудухкстати, зачем пишут auto& var или auto* var ? ведь ссылка относится к переменной и когда позже будут вызывать var (без типа), то так: *var Не, это ссылка и указатель. Разные вещи. Ты так и не почитал пару килобайт, которые у тебя есть по этой теме. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2019, 20:14 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
Dima T, с утра прочитай ещё раз, что я спросил внимательно ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2019, 20:48 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
кстати, вот man 2 mkdir , тут нормально: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2019, 21:19 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
полудух, Я тоже никак не могу понять. Везде по разному. Вроде логично знак писаить правее. К переменной. Записывай в FAQ)) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2019, 00:01 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
полудухно он дороже векторатермин дороже надо расписать. Очень зависит от контекста. А контекст от кода рядом. У вектора же поиск по key дольше. А это основное назначение map. .. Про стринг, дак это хорошо. Например, справочник аэропортов. Там ключик это 3 буквы строка. То есть штатное использование map. ... Массивы нехай юзают. Только их все меньше и меньше. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2019, 00:07 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
полудуххотя я видел кто-то массивы юзает ещё... PetroNotC SharpМассивы нехай юзают. Только их все меньше и меньше. Код: plaintext 1. 2. 3. 4.
https://glm.g-truc.net/0.9.2/api/a00001.html Так что их, как и в Java будет всё меньше и меньше. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2019, 10:04 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
полудухкстати, зачем пишут auto& var или auto* var ? ведь ссылка относится к переменной Это просто стиль кодирования такой. Бывают стили с обоими вариантами. Но я например предпочитаю именно этот вариант, когда тип и все его модификаторы визуально сгруппированы, а переменная стоит отдельно. В этом стиле еще обычно есть требование объявлять только одну переменную в каждой строке, чтобы не путаться когда "int* a, b" - это объявление указателя и значения, хотя выглядит как два указателя. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2019, 16:21 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
ну вот, т.е. стиль уже требует каких-то "особых подходов" помимо того, что он нелогичный ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2019, 18:14 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
Anatoly MoskovskyЭто просто стиль кодирования такой. Бывают стили с обоими вариантами. Вот такое? int *ptr; int * ptr; int* ptr; Вроде вижу все варианты в сети с одинковой частотой). Про переменную в одной строке это перебор имхо ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2019, 18:36 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
полудухDima T, с утра прочитай ещё раз, что я спросил внимательно Извини, утром некогда было ответить. Еще раз повторяю, разберись чем ссылка от указателя отличается. Кроме разного синтаксиса есть более важные нюансы. Не хочешь вникать - ограничься ссылками. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2019, 21:33 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
PetroNotC Sharpполудухно он дороже векторатермин дороже надо расписать. Очень зависит от контекста. А контекст от кода рядом. У вектора же поиск по key дольше. А это основное назначение map. .. Про стринг, дак это хорошо. Например, справочник аэропортов. Там ключик это 3 буквы строка. То есть штатное использование map. ... Массивы нехай юзают. Только их все меньше и меньше. vector это обертка над классическим массивом, в некоторых случаях можно прямо к массиву обращаться, и поиск по ключу там самый быстрый. Аналог из C# это List<T> map это ассоциативный массив, причем сортированный по key, он самый тормозной. Побыстрее unordered_map, т.к. там нет сортировки, точнее сортировка по хэшу. Аналог в C# это Dictionary<T> Но самый быстрый это vector ! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2019, 21:42 |
|
что не так с вектором делаю?
|
|||
---|---|---|---|
#18+
Dima TполудухDima T, с утра прочитай ещё раз, что я спросил внимательно Извини, утром некогда было ответить. Еще раз повторяю, разберись чем ссылка от указателя отличается. Кроме разного синтаксиса есть более важные нюансы. Не хочешь вникать - ограничься ссылками. ахаха ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2019, 22:00 |
|
|
start [/forum/topic.php?all=1&fid=57&tid=2017583]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
others: | 263ms |
total: | 415ms |
0 / 0 |