powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / что не так с вектором делаю?
56 сообщений из 56, показаны все 3 страниц
что не так с вектором делаю?
    #39847814
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подозреваю, что нельзя делать .push_back() тому же вектору, который итерируешь...
он тогда segfault выплёвывает
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
void func()
{
    for (int num : v2)
    {
        if (num >= 20   && num <= 100)
        {
            if (rand() % 2) {v1.push_back(0);}
            else            {v2.push_back(0);}
        }
    }
}


ф-я запускается в цикле конечно
когда в векторе набирается ~1 млн, то вылетает segfault
а вот при такой постановке оно едет дальше, но тормозит с каждой итерацией и на 150 лямах уже раз в 2 секунды итерирует
но это не важно
важно - segfault из-за чего?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
    void func()
    {
        vector<int> vM, vF;

        for (int num : v2)
        {
            if (num >= 20   && num <= 100)
            {
                if (rand() % 2) {vM.push_back(0);}
                else            {vF.push_back(0);}
            }
        }

        v1.insert(end(v1), begin(vM), end(vM));
        v2.insert(end(v2), begin(vF), end(vF));
    }


т.е. я тут другой вектор создаю и оттуда добавляю в этот ПОСЛЕ итерации
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39847821
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39847835
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так это же означает, что вот там было 8 эл-тов, а когда вставляют 9й, то он переделывается на 16 эл-тов
потом на 32 и т.д.
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39847873
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут надо либо блокироваться либо версионироваться.
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39847893
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не понял?
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39847896
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухтак это же означает, что вот там было 8 эл-тов, а когда вставляют 9й, то он переделывается на 16 эл-тов

Учти что 8 исчезает и появляется 16 новых, куда копируется исходные 8. А твой цикл упирается в 9-й несуществующий, который после 8-го исчезнувшего.

PS Поизучай что такое указатели. Явно их тут нет, но "под капотом" именно они.
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39847898
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так этим всем .push_back() занимается, где у меня цикл упирается?
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39847899
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухтак этим всем .push_back() занимается, где у меня цикл упирается?
Да, v2.push_back(0)
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39847906
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так мы в итоге пришли к тому, что
авторподозреваю, что нельзя делать .push_back() тому же вектору, который итерируешь...
?
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39847919
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухне понял?
Обычно структуры данных (списки, деревья, хеш таблички) не любят модификаций.
Они перестраивают свою внутреннюю структуру когда ты что- то добавляешь или удаляешь.

Поэтому итератор по старой структуре будет сломан.
И его надо заново пересоздать.

Коробочное решение этого вопроса - это версионные структуры данных. Или запрет на работу push или итератора взаимно. По сути блокировки.

И ещё.

С точки зрения бд в примере с массивом ты хочешь фантомного чтения. Не знаю хорошо это или плохо для твоей задачи. Но надо смотреть смыслы . Может тут не массив а очередь.
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39847924
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухтак мы в итоге пришли к тому, что
авторподозреваю, что нельзя делать .push_back() тому же вектору, который итерируешь...
?Да, нельзя. А какое поведение вы ожидаете? По добавленным элементам цикл тоже должен пройти?
Вот в list например можно добавлять по ходу итерирования
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39847931
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так ведь вектор вроде задуман так, что в конец ему добавлять можно
безо всяких "перестроек"
и замечу, что он таки растёт БЕЗ приключений до определённого момента
а потом падает
и вот причина падения конкретно в этом месте непонятна
память то ведь есть
maytonОни перестраивают свою внутреннюю структуру когда ты что- то добавляешь или удаляешь.
таки не совсем... они же динамические
они выделяют память под определённое кол-во ячеек и ты можешь пихать в эти заготовленные ячейки новые значения
когда кол-во заканчивается, то выделяется ещё столько же (т.е. по окончании умножается на 2)
хотя конечно можно и железно прописать конкретное кол-во эл-тов, где чётко сказано, что больше не будет
но это не тот случай
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39847938
blonduser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухтак ведь вектор вроде задуман так, что в конец ему добавлять можно
безо всяких "перестроек"


Можно, если к элементу вектора обращаться по индексу, а не через итератор.
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39847941
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух,

Для хеш-таблички это неверно. Да и нет у нее метода push_back.
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39847951
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухтак ведь вектор вроде задуман так, что в конец ему добавлять можно
безо всяких "перестроек"
и замечу, что он таки растёт БЕЗ приключений до определённого момента
а потом падает
и вот причина падения конкретно в этом месте непонятна
Читай как устроены указатели и выделение памяти (new), тогда будет понятно. Тут никто не будет лекцию читать про базовые основы С++, для этого учебники есть.
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39847974
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tполудухтак ведь вектор вроде задуман так, что в конец ему добавлять можно
безо всяких "перестроек"
и замечу, что он таки растёт БЕЗ приключений до определённого момента
а потом падает
и вот причина падения конкретно в этом месте непонятна
Читай как устроены указатели и выделение памяти (new), тогда будет понятно. Тут никто не будет лекцию читать про базовые основы С++, для этого учебники есть.
у меня 20 файлов с инфой про указатели, там есть всё что нужно
нечего сказать, вали мимо.
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39847981
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухтак ведь вектор вроде задуман так, что в конец ему добавлять можно
безо всяких "перестроек"
и замечу, что он таки растёт БЕЗ приключений до определённого момента
а потом падает
и вот причина падения конкретно в этом месте непонятна
память то ведь есть
maytonОни перестраивают свою внутреннюю структуру когда ты что- то добавляешь или удаляешь.
таки не совсем... они же динамические
они выделяют память под определённое кол-во ячеек и ты можешь пихать в эти заготовленные ячейки новые значения
когда кол-во заканчивается, то выделяется ещё столько же (т.е. по окончании умножается на 2)
хотя конечно можно и железно прописать конкретное кол-во эл-тов, где чётко сказано, что больше не будет
но это не тот случайНу нельзя же увеличить ранее выделенный блок памяти. А вектор должен размещаться в непрерывном куске памяти. Так что выделяется новый блок большего размера, в него копируются значения из старого, и старый блок освобождается. А итератор продолжает указывать на освобожденный блок.
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39848000
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BarloneА итератор продолжает указывать на освобожденный блок.

Итератор - класс. Он не обязан инкапсулировать указатель, ему хватит и смещения.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39848001
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухDima Tпропущено...

Читай как устроены указатели и выделение памяти (new), тогда будет понятно. Тут никто не будет лекцию читать про базовые основы С++, для этого учебники есть.
у меня 20 файлов с инфой про указатели, там есть всё что нужно
нечего сказать, вали мимо.
Удачи в беге по граблям
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39848006
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДля хеш-таблички это неверно
Не совсем: удали элемент, куда смотрит итератор и следующий будет неизвестен.
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39848007
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovBarloneА итератор продолжает указывать на освобожденный блок.

Итератор - класс. Он не обязан инкапсулировать указатель, ему хватит и смещения.
Не обязан конечно, но может. И во многих реализациях итератор по вектору - это именно указатель. Сказано же - при реаллокации итераторы инвалидируются.
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39848016
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barloneполудухтак ведь вектор вроде задуман так, что в конец ему добавлять можно
безо всяких "перестроек"
и замечу, что он таки растёт БЕЗ приключений до определённого момента
а потом падает
и вот причина падения конкретно в этом месте непонятна
память то ведь есть
пропущено...

таки не совсем... они же динамические
они выделяют память под определённое кол-во ячеек и ты можешь пихать в эти заготовленные ячейки новые значения
когда кол-во заканчивается, то выделяется ещё столько же (т.е. по окончании умножается на 2)
хотя конечно можно и железно прописать конкретное кол-во эл-тов, где чётко сказано, что больше не будет
но это не тот случайНу нельзя же увеличить ранее выделенный блок памяти. А вектор должен размещаться в непрерывном куске памяти. Так что выделяется новый блок большего размера, в него копируются значения из старого, и старый блок освобождается. А итератор продолжает указывать на освобожденный блок.
ну если бы в этом была проблема, он бы сразу упал, не?

Dima Tполудуху меня 20 файлов с инфой про указатели, там есть всё что нужно
нечего сказать, вали мимо.
Удачи в беге по граблям
из тебя помощник, как из пятого колеса телега

по граблям я бегать люблю и практикую
потому что без грабель ты никогда не станешь специалистом
не собрав ВСЕ ошибки ты никогда не узнаешь, что тебя ждёт, если сделать это и то
это чуть ли не главная часть учебного процесса - грабли собирать
кроме того, когда ты сам спец, ошибок поубавится, но вот молодняк рядом может под шумок угробить и тебя заодно
так что грабли рулят
не надо меня ими пугать
я не раз проходил путь с полного нуля в теме до какого-никакого спеца и знаю, что такое учёба
меня жутко бодрит сам процесс обучения, я люблю грабли
а вот что меня раздражает, так это когда некий "гуру" пытается самоутвердиться за твой счёт.
про указатели 3.14здёж
нельзя разобраться в подобной ошибке просто узнав, что такое динамическая память и чем указатель от ссылки отличается
я читал про них всё и выжимка из доков составила аж 56 кб
так что не надо мне ля-ля. Нечего сказать пройди мимо.
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39848018
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухDima Tпропущено...

Удачи в беге по граблям
из тебя помощник, как из пятого колеса телега

по граблям я бегать люблю и практикую
потому что без грабель ты никогда не станешь специалистом
не собрав ВСЕ ошибки ты никогда не узнаешь, что тебя ждёт, если сделать это и то
это чуть ли не главная часть учебного процесса - грабли собирать
кроме того, когда ты сам спец, ошибок поубавится, но вот молодняк рядом может под шумок угробить и тебя заодно
так что грабли рулят
не надо меня ими пугать
я не раз проходил путь с полного нуля в теме до какого-никакого спеца и знаю, что такое учёба
меня жутко бодрит сам процесс обучения, я люблю грабли
а вот что меня раздражает, так это когда некий "гуру" пытается самоутвердиться за твой счёт.
про указатели 3.14здёж
нельзя разобраться в подобной ошибке просто узнав, что такое динамическая память и чем указатель от ссылки отличается
я читал про них всё и выжимка из доков составила аж 56 кб
так что не надо мне ля-ля. Нечего сказать пройди мимо.
Эх, был бы ты подобрее, я бы тоже подобрее ответил. В конце концов у тебя проблема и ты не понимаешь как ее решать. С++ это не высокоуровневый ЯП, тут есть куча условностей, которые надо соблюдать, а откуда они взялись надо просто знать.

PS Рули граблями, одень каску чтоб не сильно било, искренние соболезнования твоему работодателю.
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39848026
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухнельзя разобраться в подобной ошибке просто узнав, что такое динамическая память и чем указатель от ссылки отличается
Это говорит о том что у тебя каша в голове.

Объясняю на примере: 8 орехов лежат в ячейках 260-267, в процессе пересчета добавили орех и т.к. ячейка 268 занята, то все орехи переложили в ячейки 100500-100508, дальше понятно?
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39848028
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудуха вот что меня раздражает, так это когда некий "гуру" пытается самоутвердиться за твой счёт.
Извиняюсь что пытался помочь, больше не буду.
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39848035
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TmaytonДля хеш-таблички это неверно
Не совсем: удали элемент, куда смотрит итератор и следующий будет неизвестен.
Я комментировал добавление нового элемента.
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39848044
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я тоже спрошу
segfault в данном случае это fragmentation of the free store?
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39848152
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЭх, был бы ты подобрее, я бы тоже подобрее ответил. В конце концов у тебя проблема и ты не понимаешь как ее решать. С++ это не высокоуровневый ЯП, тут есть куча условностей, которые надо соблюдать, а откуда они взялись надо просто знать.
опять ля-ля

"я бы, да кабы, если бы" - что ты обиженную девочку строишь
люди ходят на форумы, чтобы повышать квалификацию, или хотя бы дать пищу мозгу
когда они видят интересную им проблему, они разминают об неё мозги и получают с этого профит:
во1, для себя - обновлённый опыт
во2, помогли кому-то, а это + в карму и к ЧСВ
а НЕинтересные проблемы они игнорируют

но они не говорят: "я бы помог, если..."
или "вот тебе квест, иди выполняй, потом спляшешь, помоешь окна, а я подумаю..."
или "да ты нихера не шаришь, ты нуб, ты зачем вообще пытаешься разобраться, надо просто знать..."
авторВ конце концов у тебя проблема и ты не понимаешь как ее решать. С++ это не высокоуровневый ЯП, тут есть куча условностей, которые надо соблюдать, а откуда они взялись надо просто знать.
спасибо, дядь, ты лучший, открыл мне глаза наконец-то


PS Рули граблями, одень каску чтоб не сильно било, искренние соболезнования твоему работодателю.
я сам работодатель.
Dima Tполудухнельзя разобраться в подобной ошибке просто узнав, что такое динамическая память и чем указатель от ссылки отличается
Это говорит о том что у тебя каша в голове.

Объясняю на примере: 8 орехов лежат в ячейках 260-267, в процессе пересчета добавили орех и т.к. ячейка 268 занята, то все орехи переложили в ячейки 100500-100508, дальше понятно?
полудухну если бы в этом была проблема, он бы сразу упал, не?
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39848159
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabя тоже спрошу
segfault в данном случае это fragmentation of the free store?
нет, там что-то другое, уже не помню (
что-то про 4
одну ошибку я разобрал и пофиксил - нельзя вставлять значение в ячейку вектора, которой не существует - тоже отваливается без описания ошибки
но там чё-то другое было
оно отваливалось при достижении определённого числа
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39848362
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухBarloneпропущено...
Ну нельзя же увеличить ранее выделенный блок памяти. А вектор должен размещаться в непрерывном куске памяти. Так что выделяется новый блок большего размера, в него копируются значения из старого, и старый блок освобождается. А итератор продолжает указывать на освобожденный блок.
ну если бы в этом была проблема, он бы сразу упал, не?
Не. С чего бы ему сразу падать? Память то доступна. А что в ней уже не вектор - это не сразу скажется. И вообще от реализации зависит - в какой именно код for по контейнеру компилируется...
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39848365
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух, может тебе всё таки подойдет Queue?
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39848510
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухну если бы в этом была проблема, он бы сразу упал, не?
Не. Не хочешь вникать в причины - не спрашивай почему упал, запомни что так нельзя делать и больше не делай.
А то что упал - это счастье, иначе бы пошел мусор на вход твоей проги и ты бы устал искать откуда мистика идет.
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39848523
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BarloneПамять то доступна. А что в ней уже не вектор - это не сразу скажется.
хм, фигово (
вроде в цикле находимся, да и память есть, а тут UB...

maytonполудух, может тебе всё таки подойдет Queue?
не, надо доступ по ключу
да я уже прикрутил тот второй способ
я сразу понял, что нельзя делать .push_back() тому же вектору, который итерируешь
а для понятия деталей походу надо написать пару сотен К строк
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39848526
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух, из твоей хотелки можно сделать предположение что у тебя - конкурентный
доступ к структуре данных из 2х независимых потоков. Один хочет видеть итератор. Второй хочет добавлять
элемент. Есть миллион и маленькая тележка способов как решить твою задачу. Но я убежден
что правильный ее вариант решения на самом деле более простой. И он связан с пересмотром
алгоритма или подхода к твоей задаче. И ломать об колено итератор не нужно будет.
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39848618
Фотография OoCc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухне, надо доступ по ключу

Используй std::deque. Ещё и работать будет быстрее.
std::vector - дебильный контэйнер для Basic-писателей.
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39848748
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, ну я так и сделал
всем спасибо
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39850397
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух,

Подскажи, как в векторе менять значения в функции
foor(auto i : vertices) {
i.x = 12345
.....
наа выходе из функции все теряеттсся

f(std::vector<glm::vec3> & vertices)
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39850404
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharpfoor(auto i : vertices) {
i.x = 12345
Тут ты меняешь во временной переменной, а не в векторе. Используй ссылку
Код: plaintext
1.
foor(auto& i : vertices) 


https://stackoverflow.com/questions/29859796/c-auto-vs-auto
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39850406
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
Блин, везде ставить))
Ты гений. Заработало)
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39850444
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OoCcполудухне, надо доступ по ключу

Используй std::deque. Ещё и работать будет быстрее.
std::vector - дебильный контэйнер для Basic-писателей.А какие преимущества у deque в ключе рассматриваемой темы?
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39850489
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad,
Никаких)
Если надо по ключу, то std::map вестимо.
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39850539
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpAmKad,
Никаких)
Если надо по ключу, то std::map вестимо.
но он дороже вектора
и рассчитан на string в кач-ве ключей
а когда цифровые индексы, то достаточно массива, который в C++ заменён на вектор (который дешевле всего сейчас походу)
хотя я видел кто-то массивы юзает ещё...
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39850541
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, зачем пишут auto& var или auto* var ?
ведь ссылка относится к переменной
и когда позже будут вызывать var (без типа), то так: *var
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39850552
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухкстати, зачем пишут auto& var или auto* var ?
ведь ссылка относится к переменной
и когда позже будут вызывать var (без типа), то так: *var
Не, это ссылка и указатель. Разные вещи. Ты так и не почитал пару килобайт, которые у тебя есть по этой теме.
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39850562
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, с утра прочитай ещё раз, что я спросил
внимательно
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39850569
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, вот man 2 mkdir , тут нормально:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SYNOPSIS
       #include <sys/stat.h>
       #include <sys/types.h>

       int mkdir(const char  *pathname , mode_t mode);

       #include <fcntl.h>           /* Definition of AT_* constants */
       #include <sys/stat.h>

       int mkdirat(int dirfd, const char  *pathname , mode_t mode);
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39850600
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух,
Я тоже никак не могу понять. Везде по разному.
Вроде логично знак писаить правее. К переменной.
Записывай в FAQ))
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39850601
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухно он дороже векторатермин дороже надо расписать. Очень зависит от контекста. А контекст от кода рядом.
У вектора же поиск по key дольше.
А это основное назначение map.
..
Про стринг, дак это хорошо. Например, справочник аэропортов. Там ключик это 3 буквы строка.
То есть штатное использование map.
...
Массивы нехай юзают. Только их все меньше и меньше.
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39850635
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудуххотя я видел кто-то массивы юзает ещё...
PetroNotC SharpМассивы нехай юзают. Только их все меньше и меньше.
Код: plaintext
1.
2.
3.
4.
//вот 10 лет назад тут был массив (указатель)
glUniform3fv (uniVec, 1, указательМассив);
// теперь тут обертка и ЯП более высокого уровня)
glUniform3fv (uniVec, 1, glm :: value_ptr (v));


https://glm.g-truc.net/0.9.2/api/a00001.html
Так что их, как и в Java будет всё меньше и меньше.
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39850689
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухкстати, зачем пишут auto& var или auto* var ?
ведь ссылка относится к переменной
Это просто стиль кодирования такой.
Бывают стили с обоими вариантами.
Но я например предпочитаю именно этот вариант, когда тип и все его модификаторы визуально сгруппированы, а переменная стоит отдельно. В этом стиле еще обычно есть требование объявлять только одну переменную в каждой строке, чтобы не путаться когда "int* a, b" - это объявление указателя и значения, хотя выглядит как два указателя.
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39850701
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну вот, т.е. стиль уже требует каких-то "особых подходов"
помимо того, что он нелогичный
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39850708
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyЭто просто стиль кодирования такой.
Бывают стили с обоими вариантами.
Вот такое?
int *ptr;
int * ptr;
int* ptr;
Вроде вижу все варианты в сети с одинковой частотой).
Про переменную в одной строке это перебор имхо
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39850722
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухDima T, с утра прочитай ещё раз, что я спросил
внимательно
Извини, утром некогда было ответить. Еще раз повторяю, разберись чем ссылка от указателя отличается. Кроме разного синтаксиса есть более важные нюансы. Не хочешь вникать - ограничься ссылками.
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39850723
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharpполудухно он дороже векторатермин дороже надо расписать. Очень зависит от контекста. А контекст от кода рядом.
У вектора же поиск по key дольше.
А это основное назначение map.
..
Про стринг, дак это хорошо. Например, справочник аэропортов. Там ключик это 3 буквы строка.
То есть штатное использование map.
...
Массивы нехай юзают. Только их все меньше и меньше.
vector это обертка над классическим массивом, в некоторых случаях можно прямо к массиву обращаться, и поиск по ключу там самый быстрый. Аналог из C# это List<T>
map это ассоциативный массив, причем сортированный по key, он самый тормозной. Побыстрее unordered_map, т.к. там нет сортировки, точнее сортировка по хэшу. Аналог в C# это Dictionary<T>
Но самый быстрый это vector !
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39850726
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TполудухDima T, с утра прочитай ещё раз, что я спросил
внимательно
Извини, утром некогда было ответить. Еще раз повторяю, разберись чем ссылка от указателя отличается. Кроме разного синтаксиса есть более важные нюансы. Не хочешь вникать - ограничься ссылками.
ахаха
...
Рейтинг: 0 / 0
что не так с вектором делаю?
    #39850727
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухахаха

ГыГы
Модератор: На этой веселой ноте мы закончим
...
Рейтинг: 0 / 0
56 сообщений из 56, показаны все 3 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / что не так с вектором делаю?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]