Вот, с deque все чотка:
cpp.sh/6jjv
Ну мове-конструктор нужен, на случай изменения размера вектора. Вот если сделать reserv, то он не вызовится ниразу, но для компиляции таки нужен. На SO предлагают другие контейнеры, типа list — в них «переразмер» не происходит.
Вот тут обсуждают, чо делать:
stackoverflow.com/...-constructor-in-stdvector
вот так можно:
cpp.sh/8jgfb
но все равно не скомпилируется, ему нуженб будет move конструктор, хотя вызыватся он не будет из-за reserv. Но для компиляции нужен)) — можно засунуть его в приват и зафрендить B
Можно заменить массив на std::vector и использовать
B::B()
{
vec.emplace_back(3, 5);
vec.emplace_back(4, 7);
}
— вот это будет что вы хотите — создание элемента без копирования
Там тонкость с инициализацие массивов есть, как полей класса.
Скажем поле
Arr a[10]{0} — выставит все нулями, а вот
Arr a[10]{1} — уже не работает, помоему первый элемент станет 1 ...или ваще не скомпилится..
Точнее не помню, помню, что решил не делать массивы-члены класса для себя :)
У меня даже для инита массивов шаблон есть (когда весь массив в 1 значение)
template
void for_each_array(T(&arr)[N], const Pred& func)
{
for (size_t i = 0; i < N; ++i)
func(arr[i], i);
}
template
void init(T(&arr)[N], const T& val)
{
for_each_array(arr, [&val](T & a, auto)
{
a = val;
});
}
Ну можно разрешить move, обычно это безопасно:
cpp.sh/7d2df
Хотя, если есть скажем std::atomic — там move удалены, потому что есть несколько видов доступа к памяти. Прийдется явно описывать, под задачу.
Ну значит чет не так в вашем классе. Например, обратите внимание, как я удаляю конструкторы, это обязательно должно быть public. Проверьте const везде, вы передаете *this, для const массива ето должноы быть const this и вызов только const методов.
статик, функцию помещаем именно в h файл:
inline Type& mystatic()
{
static Type obj;
return obj;
}
создает 1 раз при первом обращении ...
можно сделать shared_ptr obj и тогда гдето в начале самом
mystatic().reset(new Type(args));
Добавить явный конструктор, котоорый принимает
2, *this, transport_
массив описать массивом
const Type chans[] = {};
В частности это опенсорс клон одной очень популярной ММО. Причем, там их много разных. Именно в этом вагон костылей, которые делают точное соотв. оригиналу. Но он нихрена не рабочий толком, даже на совр. железе. Есть уже вылизаные клоны, но там нет костылей :). И оригинала уже нет, чтоб повторить костыли. Как — то так.
Фанат етой ММО платит, чтоб работало, как старый добрый оригинал.
Да просто легче сразу писать.
А потом легким движением руки, что-то типа
std::vector< T, boost::pool_allocator< T > >;
или еще че ... смотря че профайлер покажет, скажем.
Но вообще, эт мне так удобнее...уже 6+мес ковыряю 16мб сырцов, которые с 2009г. 5000 глобальных замен const Some* и т.д. и т.п на псевдонимы, которые потом в шаред_птр перенаправил частями ... и вычитывал еще 3 недели....вопщем луче вот прям сразу всегда писать псевдонимы.
я бы заменил JS на Lua спокойно, но никому морочится не охотас этим.
Встречал несколько раз самопалы разных STL классов. Делал просто — удалял все нафик, делал внутри STL, а методы — обвертка вокруг стл. Именно в этом и преимущество ООП. Если оно есть — достаточно в 1 месте все менять.
А, если, программер не джун, то он еще чет такое сделает:
template
using VectorT = std::vector < T >;
просто на будущее, чтоб вдруг че менять.
если сытый, то хочется спать, а не учиться.
а я все думал, потому что кровь в желудок вся уходит...:)
Размножаются примерно в центре мозга. Там где указатели на фрагменты.
Но они же двигаться не могут — там и сидят.
Еще раз — сеть перестраивается на основани ВЫЖИВШИХ. К 23 годам число клеток мозга примерно 1/2 по сравнению с 0 годом. Вот эта половина и «постоянно перестраивается» до смерти. Конкретное число 1/2 или 1/4 зависит от ранних лет.
Я наверно не внятно пишу... учат уже готовую связную сеть. В юности их/ее просто НЕТ. Она должна связаться/построиться. А вот уже потом, вы всю жизнь в нее инфу пихаете. Она ее запоминает путем установления доп. связей м-у ВЫЖИВШИМИ нейронами (изначально их 2х поштучно, потом лишние вымирают). Чем больше вы у ребенка активируете изначальных штук, тем больше выживит. Активация зависит от разнообразия внешней среды. Чем больше выжило — тем потенциально умнее и приспособленнее к неожиданностям взрослый.
Участки мозга вымирают/активируются/связываются не в один момент, там периоды по
ЭЭ .. так с любимым или нет? ) Потому что, если и правда любимый — то только радость от нежданчика, а если очередная страсть ...то, конечно, проблема. В нашей культуре «любимый» подразумевает желание моногамности.
QML + JS это худшее, что могло вообще случиться :) В 6 версии обещают сделать их компилироваными, т.е. вновь изобретут виджеты...наконец-то.