• Почему доступ к элементам vector-а O(1)?

    RabraBabr
    @RabraBabr
    Quark, Вектор может часто делать реаллокацию памяти. При том по умолчанию делает это копированием. Кончилась капасити и реаллокация.

    Удалили вы первый элемент из вектора все поехало. Можно свапнуть с последним элементом (если он не упорядочен). Вставить в серединку оппять все элементы до конца двигать. и т.д и т.п При том по умолчанию все это в динамической памяти.

    Стек быстрее работает, можно использовать std::array. Но стека мало очень.
  • Вопрос про указатели. Правильно ли я понимаю?

    RabraBabr
    @RabraBabr
    Армянское Радио, естественно имелся в виду стандартный аллокатор.
  • Вопрос про указатели. Правильно ли я понимаю?

    RabraBabr
    @RabraBabr
    Dyikot, Я не очень понимаю вопрос. Вопрос в том почему делают как в случае v1 или v2 ?
    Нужно понимать, что в контейнерах v1 и v2 лежат разные типы данных. В v1 переменные типа интеджер, а в v2 указатели на переменные типа интеджер которые могут находится вообще где угодно.
    Почему мы можем захотеть хранить в контейнере указатели на объекты? Ну например потому, что сами объекты могут быть тяжеловесными и иметь сложную структуру и копировать их туда сюда в памяти не самая удачная затея.
  • Вопрос про указатели. Правильно ли я понимаю?

    RabraBabr
    @RabraBabr
    vector<int> v1;
    Тут объект v1 будет хранится в стеке. Но внутри у него будет указатель на буфер который находится в динамической памяти. Именно там и будут хранится инты.

    vector<int*> v2
    Тут v2 тоже в стеке. Но так же внутри имеет указатель на буфер в динамической памяти, где будут хранится указатели на инты.
  • Вопрос про указатели. Правильно ли я понимаю?

    RabraBabr
    @RabraBabr
    Dyikot, все они хранятся в динамической памяти. Просто в первом случае в буфере хранятся инты, а во втором указатели на инты.
  • Вопрос по оформлению кода C++?

    RabraBabr
    @RabraBabr
    Acaunt, есть же книжка кажется Макконнелл С. "Совершенный код". Там все эти вопросы разобраны. Мне она не очень понравилась так как в ней много воды, а все эти вещи казались и так очевидными. Но если вы задаете эти вопросы то мне кажется она вам поможет.
  • Актуальная литература для C++?

    RabraBabr
    @RabraBabr
    Цитата автора вопроса -
    До этого никакой литературы по этим языкам не читал.


    Из аннотации в предложенной вами книги -
    Давайте вернемся к серьезному тону и,наконец, ответим на вопрос: кому будет
    интересна эта книга? Программирование С++ по ней вы не изучите – для этого есть классические книги Х. Дейтела, Б. Страуструпа, С. Прата и др. Для того
    чтобы воспринимать материал, нужно уже знать концепцию объектно-ориентированного программирования и иметь хотя бы небольшой опыт разработки программ на С++ или «близких по духу» высокоуровневых языках – вроде
    C#, Java, Python. Неплохо бы знать такие концепции, как лямбда-функции и
    многопоточные/параллельные программы.


    Как видите даже сам автор рекомендует классику. Я бы тоже рекомендовал начинать например с "Язык программирования C++Лекции и упражнения 6-е издание Stephen Prata"

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

    По относительно свежим стандартам мне понравилась вот эта книга - Лоспинозо c++ для профи (краш курс). Но ему она тоже не подойдет. Все это он может почитать на следующем этапе.

    Я например сейчас читаю вот это - "Федор Г.Пикус
    Идиомы и паттерны проектирования в современном c++" но это тоже не для новичков, а для чуть чуть более продвинутых программистов.
  • Актуальная литература для C++?

    RabraBabr
    @RabraBabr
    Тебе как новичку не нужны книги по 20 стандарту.
    Оттуда может понадобится разве, что std::span

    Остальное можешь изучать по классическим - "старым" книгам.
  • Как в деструкторе базового класса вызвать переопределённый метод?

    RabraBabr
    @RabraBabr
    А зачем вам это? Какую проблему вы пытаетесь решить таким способом?
  • Как сделать чтение информации из файла в несколько массивов?

    RabraBabr
    @RabraBabr
    Чего тут сложного? В функции майн объявляется переменная f типа FunDataBase,
    далее объявляется массив строк со списковой инициализацией, далее с помощью оператора << инициализируется f строками из этого массива. И с помощью метода printDB() выводится в консоль. Тип FunDataBase представляет из себя структуру с перегруженным оператором <<

    А теперь серьезно. Я бы как препод тебе этот код не зачел. Потому, что он явно не твой. Типичный студенческий код должен содержать переменные типа a1, a2, i, j, k, x, stroka, kolichestvo, fignya и т.д. Так же должны быть C-стайл строки, встроенные массивы и три - пять вложенных циклов for, что бы сложность алгоритма приближалась к O(n^k). + какие нибудь хитровырвиглазные проверки в куче if else. А объектный код и перегрузки вы еще не проходили.
  • Как это можно реализовать?

    RabraBabr
    @RabraBabr
    Вот тут поддержу. Автор какую задачу решаем? А то могу столько всяких разных идей накидать, а потом окажется, что все это вообще не нужно и сильно усложняет дело.
  • Обучение C++ на Linux, VS code?

    RabraBabr
    @RabraBabr
    но очень хочет туда попасть.


    Я могу сказать, что делал я. Но это совет из 90-ых (в смысле я 9 классе учился в 90-ые). И не знаю насколько актуально это сейчас.

    Короче я вдруг с ужасом обнаружил, что осталось полгода до окончания 9 класса. Ну да там еще два года старших, а дальше что? Мои одноклассники больше про девок и пиво думали. Впрочем как и я. Но случилось так, что мой батя притащил меня к себе на завод. Поглазеть так сказать как работает рабочий люд. И мне жутко там не понравилось. А добили его слова "- Ну что сынок закночиш школу, армия путяга и к нам на завод?"

    Вот тут то я очень сильно напрягся, на завод я не хотел, мне очень нравилось сидя в уютном кресле за компом писать всякие мелкие игрушки на паскале. Вот этим я бы хотел заниматься.

    А школа у нас была слабенькая обычная и после нее мне поступление в нормальный вуз на программиста не светило. (да это тогда уже был мэйнстрим и конкурс был 30 человек на место).

    Короче я не знаю есть ли щас такое. Но я нашел школу (да далеко от дома, приходилось на трамваях с пересадками ездить), где в 10-11 классах преподают преподы ВУЗа. Лекции они читали в школе, а лабораторки делали в вузе. Там же дали и всю нормальную базу. Алгоритмы, структуры данных, ооп, базы данных, сети, проектирование эвм, системное программирование, архитектура приложений, компьютерную графику и т.д. Короче весь стек снизу доверху. Где то с курса третьего практика в IT компаниях. И уже на защите диплома покупатели отбирали самых толковых на работу. Можно было выбирать куда идти сразу на нормальную должность на нормальную зарплату. Сидеть в стекляшке в уютном кресле пить кофе и заниматься любимым делом.

    Но внезапно. Нужно дрочить математику, прям до белого тумана в глазах. Без нее ты просто тупо вступительные экзамены не сдашь и в универ не поступишь. Да и для серьезного программиста, а не условного формошлепа она пригодится. И да английский тоже надо учить.
  • Почему не выводится двумерный массив?

    RabraBabr
    @RabraBabr
    Я написал условие, нопри выводе элементов некоторые пропадают


    if (w[i][j]>0 && w[i][j] < 6)
                {
                    w[i][j] = 0;
                    cout << w[i][j] << "\t ";
                }


    Ну все правильно cout выводит элементы удовлетворяющие условию, остальные "пропадают"
  • Есть ли хоть какое-то преимущество использования функтора перед обычной функцией в данном случае?

    RabraBabr
    @RabraBabr
    RabraBabr,
    Например std::async,
    принимает произвольный объект функции, который может выполняться в отдельном потоке. Она использует оператор вызова функции в качестве интерфейса.
    Комитет, мог потребовать, чтобы вы выставили, скажем, метод run, но они выбрали оператор вызова функции, потому что он позволяет
    универсальному коду использовать идентичные обозначения для вызова функции или объекта функции.
  • Есть ли хоть какое-то преимущество использования функтора перед обычной функцией в данном случае?

    RabraBabr
    @RabraBabr
    Основная причина, по которой можно захотеть сделать пользовательский тип вызываемым,
    заключается во взаимодействии с кодом, который ожидает, что функциональные
    объекты будут использовать оператор вызова функции. Вы обнаружите, что многие библиотеки, такие как stdlib, используют оператор вызова функции в качестве интерфейса для объектов, подобных функциям.
  • Откуда здесь NAN?

    RabraBabr
    @RabraBabr
    Мне вообще вот это вот все кажется станным:
    float* MultiplyMatrices(const float* matrix_1, const float* matrix_2){
        auto* result_matrix = (float*)_mm_malloc(N * N * sizeof(float), 16);
        return result_matrix;
    }


    и далее
    float *GenerateMatrixR(const float *A, float *I, const float *B) {
        auto *multed = MultiplyMatrices(B, A);
        delete[] multed;
    }


    внезапно да!
  • Почему прирост ОЗУ в 2 раза почти ничего не дает в производительности?

    RabraBabr
    @RabraBabr
    Ну сделать рамдрайв и закинуть туда какие нибудь кэши и файлы подкачки.
  • Почему не работает функция в с++ пытаюсь вызвать, а она не вызывается?

    RabraBabr
    @RabraBabr
    return 0;
    menu_for(v);


    Return перед ней. Он до нее не доходит даже.