Задать вопрос
  • Kак узнать размер файла с++?

    myjcom
    @myjcom Куратор тега C++
    Даниил, непонятно что вы хотите сделать. Двоичные и текстовые данные все-таки отличаются.
  • Kак узнать размер файла с++?

    myjcom
    @myjcom Куратор тега C++
    люди тратят время на разработку библиотек и документации, за что им спасибо,
    а вы настолько суровы, что пишете все сами.
    https://en.cppreference.com/w/cpp/filesystem/file_size
  • Есть ли учебник по алгоритмам начиная с азов с применением C++?

    myjcom
    @myjcom Куратор тега C++
    Смотря для чего это вам нужно.
    Если для учебы и просто сдать это совершенно другая тема в плане уровня литературы. Для получения информации по блок схемам достаточно скачать ГОСТ. и любой подходящий софт, Ну или руками с циркулем и линейкой чертить.
    Если вы знаете язык, переписать на него алгоритм хоть с блок схемы хоть с псевдокода, хоть с чего не составляет особого труда. Если стоит цель научиться нужно пройти некоторые этапы самостоятельно.
    По алгоритмам, возможно, книга в данном случае и не нужна, если есть интернет algolist.ru например или вики, или гугл. По алгоритма книг полно гуглятся на раз-два. И студенты первого второго курса разные бывают, кто-то Кромена и Скиену уже освоил, а кто-то пузырьковую сортировку гуглит.
    Если сможете написать для чего Вам нужна литература по алгоритмам и именно на плюсах, то ответить будет гораздо проще. Или иначе можно насоветовать то что вам вообще не нужно.
  • С++, Как решить такое на с++???

    myjcom
    @myjcom Куратор тега C++
    Adamos, iostream.h древний++
    vcl вроде как борланд билдер)
  • Как учить C / C++ на Linux?

    myjcom
    @myjcom Куратор тега C++
    min4er,
    min4er min4er Автор вопроса
    Вероятно меня не совсем верно поняли. Я как раз хочу изучить как писать конфиги, мейки, лдфлаги ставить. Есть ли учебник, где бы C/C++ подавался именно в таком разрезе? То есть, грубо говоря, имеется охапка файлов *.c и *.h а теперь к ней нужно сочинить config, make и т. д. и как это правильно делать.

    Вот если бы это было вопросом, а не пояснением к вопросу, которое отражает суть вопроса, я бы ответил. Для старта есть отличная книга (С++ там нет и Windows, но все остальное по делу gcc posix в том числе)
    Язык С в XXI веке
    Год издания: 2015
    Автор: Бен Клеменс
    Издательство: ДМК Пресс
    ISBN: 978-5-97060-101-3 , 978-1-491-90389-6

    Однако в учебниках обычно описывается сам язык, но ничего не говорится про всякие GNU-тые утилиты и как ими пользоваться.
    Это в совсем-совсем учебниках по языку. Например в серии для программистов даже половины кода не написано, потому что подразумевается что и так понятно.) Тут не столько туториал по языку нужен, сколько руководство по программированию в среде и документация к компилятору.
  • Ввести N целых чисел в 1-мерный массив. Вычислить количество элементов массива=0 и сумму их индексов. Как реализовать динамический массив?

    myjcom
    @myjcom Куратор тега C++
    НЕ просив пользователя задать количество символов

    тут либо список, либо realloc/memove.
  • С++, как добавлять элементы в hash_map?

    myjcom
    @myjcom Куратор тега C++
    Даниил,
    auto EventManager::try_emplace(const Listener&& lstr)
    {
      auto sucess = m_listeners->try_emplace({lstr._name, {}});
      if(!sucess.second)
      {
        std::cout << "key '" << lstr._name << "' "
                  << "already exist" << std::endl;
      }
    }


    int main()
    {
      std::list<std::string> events { "Open", "Move", "Close" };
      EventManager eManager{ events };
      eManager.print();
      eManager.try_emplace({"open"});
      eManager.try_emplace({"Open"});
      eManager.print();
    }

    OUT:
    Close ->
    Move ->
    Open ->
    key 'Open' already exist
    Close ->
    Move ->
    open ->
    Open ->
  • С++, как добавлять элементы в hash_map?

    myjcom
    @myjcom Куратор тега C++
    : m_listeners { std::make_unique() }
    Начиная с C++11 в STL появились умные указатели, помогающие отслеживать динамическую память и ее использование. Даже до C++11 существовал класс auto_ptr, который мог управлять динамической памятью, но его было легко применить неправильно.
    Однако с появлением умных указателей теперь редко приходится самостоятельно использовать ключевые слова new и delete, и это очень хорошо. Умные указатели — отличный пример автоматического управления памятью. Поддерживая объекты, память для которых выделяется динамически с помощью unique_ptr, мы защищены от утечек памяти, поскольку при разрушении объекта данный класс автоматически вызывает поддерживаемый им объект.
    Уникальный указатель выражает принадлежность объекта, на который ссылается, и выполняет свою задачу по освобождению его памяти, если та более не используется. Этот класс может навсегда освободить нас от утечек памяти (во всяком случае вместе со своими компаньонами shared_ptr и weak_ptr, но в этом примере мы концентрируемся только на unique_ptr). Самая приятная особенность заключается в том, что он не влияет на производительность и свободное место в сравнении с кодом, содержащим необработанные указатели и предусматривающим ручное управление памятью. (О’кей, он все еще устанавливает значение внутреннего необработанного указателя на nullptr после разрушения объекта, на который он указывает, и это нужно учитывать при оптимизации. Большая часть кода, управляющего динамической памятью и написанного вручную, делает то же самое.)


    Разыменовать уникальный указатель можно с помощью функции get(), возвращающей необработанный указатель на объект, или непосредственно с применением operator*, что опять же делает их похожими на необработанные указатели.
    Одна из важных характеристик unique_ptr заключается в том, что его экземпляры нельзя скопировать, но можно переместить из одной переменной типа unique_ptr в другую. Если бы мы могли скопировать уникальный указатель, то это значило бы, что объектом обладали сразу два указателя. Такое положение дел противоречит идее уникальных указателей, которая гласит: он может быть единственным владельцем объекта (а позже «удалителем»).


    Поскольку существуют структуры данных, такие как unique_ptr и shared_ptr, необходимость создавать объекты в куче вручную с помощью ключевых слов new и delete возникает редко. Используйте эти классы везде, где возможно! unique_ptr не создает никаких лишних издержек во время выполнения.

    Яцек Галовиц: С++17 STL©
  • С++, как добавлять элементы в hash_map?

    myjcom
    @myjcom Куратор тега C++
    Даниил,
    insert_it = m_listeners->insert( insert_it, {et, {}} );


    Поиск элементов в контейнере std::map занимает время O(log(n)). То же касается вставки новых элементов, поскольку позицию, на которую нужно добавить новый элемент, тоже необходимо найти. Простая вставка М новых элементов займет время O(M * log(n)).
    Чтобы операция была более эффективной, функция вставки контейнера std::map принимает необязательный параметр, представляющий собой подсказку для вставки. Это, по сути, итератор, который указывает на место, близкое к будущей позиции вставляемого элемента. Если подсказка корректна, то амортизированное время вставки составит O(1).

    Поскольку изначально ее у нас нет, выполним первую операцию вставки, указывая на конечный итератор

    auto insert_it(std::end( *m_listeners ));
  • Проблема с передачей значения переменной из одной функции в другую?

    myjcom
    @myjcom Куратор тега C++
    Insanchik,
    Dziękuję bardzo
    wyraża się w postaci - zauważyć rozwiązaniem
  • Проблема с передачей значения переменной из одной функции в другую?

    myjcom
    @myjcom Куратор тега C++
    Insanchik, pokażę wam jak przekazywanie tablic do funkcji. Więcej na razie nie mogę, bo trudno dostrzec swój kod w takim formacie.

    #include <iostream>
    #include <cmath>
    using namespace std;
    
    void pobieranie(const int& n, double* x, double* y)
    {
      cout<<"Enter x y ";
      for(int i = 0; i < n; ++i)
      {
        cin >> x[i]
            >> y[i];
      }
    }
    
    int pobieranie2(double& szukana, const int& n, double* x, double* y)
    {
      cout << "Enter szukana: ";
      cin >> szukana;
      if(szukana >= x[0] && szukana <= x[n - 1])
      {
        //...
      }
    
      for(int i = 0; i < n; ++i)
      {
        cout << x[i] << ' ' << y[i] << '\n';
      }
    }
    
    int main()
    {
      int n = 3;
      double szukana = 0;
      double x[n] = {0, 0, 0};
      double y[n] = {0, 0, 0};
    
      pobieranie(n, x, y);
    
      pobieranie2(szukana, n, x, y);
    }


    Najważniejsze jest tutaj to, że można przekazać do funkcji wskaźnik do tablicy, który wcześniej został ogłoszony i jest zdefiniowany.
  • Проблема с передачей значения переменной из одной функции в другую?

    myjcom
    @myjcom Куратор тега C++
    Pokaż cały kod. postaram się udzielić wszelkiej możliwej pomocy.
  • Двойной Цикл Си++. Математический пример. Как реализовать?

    myjcom
    @myjcom Куратор тега C++
    GoodOrlov, неа... см ответ (циклы независимы)
  • Двойной Цикл Си++. Математический пример. Как реализовать?

    myjcom
    @myjcom Куратор тега C++
    GoodOrlov,
    задача записана не совсем корректно
    как минимум потому что:
    int x;
    x = -1 (1) 10 на второй итерации x == 0
    sqrt(0) == 0;
    (a + 2 * x) / sqrt(x) на ноль делить нельзя.

    не говоря уже про то, что корень из отрицательного это уже комплексные числа.

    sqrt можно заменить на pow
  • Двойной Цикл Си++. Математический пример. Как реализовать?

    myjcom
    @myjcom Куратор тега C++
    GoodOrlov, причем тут консоль, у вас ошибка в вычислениях.
  • Двойной Цикл Си++. Математический пример. Как реализовать?

    myjcom
    @myjcom Куратор тега C++
    (pow(sqrt(4 * b), 1 / 3)) == pow(4 * b, 1/4);
    а в задании кубический корень.