> ...и туда же подключить домашнюю автоматизацию...
А вы не могли бы привести пример _открытой_ инфраструктуры для домашней автоматизации? Не подкола ради, самому интересно было бы. Сколько бы я ни копал эту тему, все время натыкаюсь на vendor-locked-решения (покупайте оборудование наше/сертифицированных партнеров или идите нафиг (те же лампочки Philips Hue примером)).
Игорь Соколов: Тогда Страуструпа пока лучше отложить. По личному опыту для начала хорош справочник Шилдта и практика по Павловской. Если Шилдт покажется сложным (сухим), то Дейтелы, там воды больше, но и книжка толще.
Было бы неплохо узнать ваш опыт в программировании, т.к. переучиваться легче и материал можно подобрать глубже, чем абсолютному новичку, которому параллельно нужно научиться составлять алгоритмы, понимать распространенные языковые конструкции.
Junior007: Да. Но еще раз акцентирую: std::list - это не серебряная пуля и в большинстве случаев для небольшой коллекции мелких объектов он будет проигрывать std::vector как по производительности, так и по расходу памяти.
Junior007: В общем случае - да. Но стоит учитывать, что итераторы в std::list не "бьются" при вставке, как это происходит в std::vector, это удобно в некоторых ситуациях. Если нет каих-то особых требований, то лучше использовать std::vector, этого чаще всего хватает. Потом уже нужно смотреть на списки (дешвые вставки в середину, долкий рандомный доступ), дэки (компромисс между доступом и вставкой), хэш-таблицы (быстрый доступ, быстрая вставка, огормный расход памяти)...
Junior007: Если у вас есть итератор на нужную позицию, то затратиться лишь время, необходимое на создание копии в листе и переопределении ссылок на него у предыдущего и последующего элементов. Вне зависимости от места вставки, т.е. сложность вставки константна. А если вы захотите вставить новый элемент _на шестую позицию_, то итератор туда еще потребуется получить, пройдя с начала до нынешнего 6го элемента.
Junior007: вставка легкая потому, что нет необходимости смещать "хвост" при каждой вставке. Про константную сложность _доступа_ внутри std::list там ничего не написано. Вставка по итератору - константная сложность, но этот итератор нужно предварительно найти =)
Антон Жилин: простота должна быть не в ущерб точности.
Моей целью было не столько исправить, сколько дополнить ответ. Это тонкий момент, который ставит новичков в тупик, когда у них ВНЕЗАПНО при некотором магическом стечении обстоятельств перестают передаваться лямбды через указатель на функцию.
Строго говоря, std::function - не тип функции, а "вызывабельный тип" (callable type). Функторы и лямбды _с замыканиями_ здесь тоже подойдут, в отличии от указателя на функцию.
Дмитрий Александров:
originalName = a1; //originalName указывает на первый элемент массива a1
do{
...
v6 = (originalName++)[1]; // извлекаем второй элемент, начиная с originalName и ЗАТЕМ сдвигаем originalName на следующий элемент
...
} while ( v6 ); //до тех пор, пока v6 не нуль-терминатор (!= '\0').
То есть, в случае строки "test" (или 't','e','s','t','\0') у нас будет 4 итерации, после которых v6 "нащупает" терминатор
А вы не могли бы привести пример _открытой_ инфраструктуры для домашней автоматизации? Не подкола ради, самому интересно было бы. Сколько бы я ни копал эту тему, все время натыкаюсь на vendor-locked-решения (покупайте оборудование наше/сертифицированных партнеров или идите нафиг (те же лампочки Philips Hue примером)).