Александр
push_back-ом то?
insert после end'а
Vladislav
ok, да
Александр
v.insert(v.end(), other.begin(), other.end())
Berkus
size != capacity)
блин не тупи
Berkus
v.reserve(10); // alloc v.insert(v.end(), {10 items}); // init WITHOUT REALLOC
Vladislav
insert - да, уже понял
Vladislav
ты же emplace_back предлагал)
Berkus
ну for (auto v : {10 items}) v.emplace_back(item); // INIT WITHOUT REALLOC
Berkus
ты же emplace_back предлагал)
same shit, different constructor
Vladislav
ну for (auto v : {10 items}) v.emplace_back(item); // INIT WITHOUT REALLOC
>< я про это и писал надеюсь компилятор осилит не прибавлять к size на каждой итерации
Vladislav
спасибо, капитан
Berkus
тогда я не понял что про size
Anatoly
надеюсь компилятор осилит не прибавлять к size
Berkus
и emplace и insert меняют size
Anatoly
что это за надежда?
Berkus
прибавляют к нему если коротко
Ignat
господи, вы что, неиронично инкременты экономите?
Александр
Владислав говорит, что хочет один раз увидеть size += delta вместо size++ в цикле
Anatoly
@isenbaev reserve только аллоцирует память, а далее на каждой итерации emplace_back конструиует объект и инкрементирует size
Ignat
ну это уже что-то из серии «хочется странного»
Vladislav
господи, вы что, неиронично инкременты экономите?
после того как я в профайлере увидел что ненужный memset съедает 10% cpu, меня немного параноит. Надеюсь, скоро отпустит)
Anatoly
я знаю) в любом случае, связка reserve + insert в моем случае работает
интервальный assign позволит тебе избежать очистки буфера и присвоит интервал сразу с реаллокацией в нужное число элементов и установкой в него size
Anatoly
при условии, что это random-access-iterator
Vladislav
я кусками обрабатываю и пишу, поэтому не подойдет в моем случае
Klaus
Я вот недавно хотел выделить массив из порядка тысячи объектов, у которых нет конструктора по умолчанию, и проинициализировать их в цикле, вычисляя их по-хитрому исходя из предыдущих построенных.
Klaus
Похоже, сколько-нибудь адекватный способ этого добиться - это vector и push_back в цикле, но все равно лишние операции делаются. Потому что мы сначала строим новый объект, и только потом размещаем его копию в векторе.
Vladislav
для этого и придумали emplace_back
Ioann_
// раньше и без него такое проворачивалось, но естессно, самописными контейнерами
Aidar
Перемещение
Sergey
Здравствуйте, коллеги, не подскажете где можно почитать информацию по написанию ботов на c++. В частности, интересует библиотека tgbot
Anonymous
Мне самому страшно.
Sergey
Ты этот tgbot тронешь — он развалится.
тронул, пожалел сильно. Сделал для начала парсер преобразования арифметического выражения в дерево(картинку). Замучился искать проблему работы программы через раз
Sergey
python это тема
Anonymous
На текущий момент крайне не советую писать ботов на C++.
Anonymous
Почему?
Нет хорошей либы.
Vladislav
так надо запилить
Pavel
Нет хорошей либы.
Насколько я понимаю, там задачи либы сводятся только правильно json сформировать и и правильно распарсить
Dmitry
подскажите, clang+libcxx дольше собирает чем clang+libstd++?
Dmitry
не пойму, что за сюрприз такой. то ли из-за libcxx дольше стало, то ли из-за ядра с фиксом meltdown/spectre
Ignat
казалось бы, какая разница, какую либу прилинковать
Pavel
казалось бы, какая разница, какую либу прилинковать
Прилинковать хз, а вот на компиляцию влияет
Anonymous
казалось бы, какая разница, какую либу прилинковать
Там не прилинковать, в STL огромная часть на шаблонах.
Anonymous
А их парсить надо.
Ignat
справедливо
Pavel
Были случаи что время компиляции при смене stl становилось х2
Dmitry
тут не x2 а все x10 будут
Alexey
Хм. А сюда нельзя постить ссылки на cppcon доклады?
Alexey
Ну коль нельзя, спрошу так, без контекста: у кого-нибудь есть пример показывающий разницу в производительности в случае если мы попадаем в cacheline и когда не попадаем?
Alexey
У меня не получается воспроизвести то. что вещал автора на "CppCon 2014: Mike Acton "Data-Oriented Design and C++"
Anonymous
https://godbolt.org/g/Fi6REC
ээм. А зачем в выхлопе раста rsp сранивается с fs::112?
Mike
В 2008м это роляло сильно и 1025 умножались быстрее
Anonymous
Думаю сегодня надо только побольше матрицы взять.
Mike
Ну короч степень двойки против степень двойки +1
Timur
ээм. А зачем в выхлопе раста rsp сранивается с fs::112?
это не раст, а го. Ну очевидно у того предел стека потока записывается в TLS по этому волшебному смещению
Mike
Там в свое время вся матрица мапилась на две линейки кеша
Mike
Так полому что они в одни кеш линейки влетали и 1/8 кеша юзалась условно
Mike
Точно не помню 10лет назад было
Alexey
Можно
Мне телеграм не давал копипастить сюда даже текст. И ссылки тоже. Говорил, что админы запретили мне постить медию сюда.
Alexey
Попробуй перемножить две матрицы размером 1024x1024 и 1025x1025 и т.п. Т.е размера степень двойки по стороне и нет
Завтра попробую накидать тест по тексту того доклада. Может получится понять что я делаю не так и чего не понимаю. Ну или просто у автора были устаревшие сведения.
Square
Ну у нас батлер всем по дефолту отрезает это - спама меньше :)
Alexey
когда даже текст нельзя копипастить - это очень сурово
Square
когда даже текст нельзя копипастить - это очень сурово
Не понял, форварды нельзя и встроенные ссылки
Alexey
Я не мог просто текст скопипастить. То есть точно тот же текст, который я копирую из поля ввода телеграмма.
Alexey
Может это телега дурила конечно. Может это особенность мак-версии. Я хз.
Anonymous
Здравствуйте, можно небольшое объявление о вакансии скинуть? Это не противоречит правилам?
Anonymous
Спасибо