• Как линковщик производит подстановку функций из динамических библиотек?

    @Mercury13
    beduin01, Совершенно верно. Он собирает функции в exe-файл, и делает это по совпадению имён.
  • Как решить задачу c++?

    @Mercury13
    Моя версия. Усложним задачу — аллокатор нормальный и требуется минимально вызывать new/delete.

    struct TempRange {
      int left = 0, right = 0, server = 0;
    }
    
    struct TempRanges
    {
       TempRange data[6];  // с запасом на один, реально нужно пять
       int size = 0;
    
       void add(int left, int right, int server);
       // напишешь с обработкой пустых диапазонов и правильной склейкой?
       // Обрабатывать будем только слева направо
       void add(iterator) { add(iterator->first, iterator->second.right, iterator->second.server); }
    }
    
    // Вот мы получили it
    TempRanges tmp;
    
    iterator itLeft = it;
    if (itLeft != map.begin()) {
      --itLeft;
      tmp.add(itLeft);
    }
    tmp.add(it->first, left - 1, from);
    tmp.add(left, right, to);
    tmp.add(right + 1, it->second.right, from);
    
    iterator itRight = it;
    ++itRight;
    if (itRight != map.end()) {
      tmp.add(itRight);
      ++itRight;
    }
    
    // Пошла замена, ломать можно только [itLeft, itRight)
    it = itLeft;
    for (int i = 0; i < tmp.size(); ++tmp) {
      TempRange& range = tmp.data[i];
      // Удалим лишнее
      while (it != itRight && it->first < range.left) {
        auto it2 = it;
        ++it;
        map.erase(it2);
      }
      // Заменим/добавим
      if (it != itRight && it->first == range.left) {
        it->second.right = range.right;
        it->second.server = range.server;
      } else {
        ++it;
        // Вставка с хинтом, немного выиграет!
        it = map.emplace_hint(it, range.left, ValueType { range.right, range.server } );
        ++it;
      }
    }
    // Удалим остаток
    map.erase(it, itRight);
  • Как решить задачу c++?

    @Mercury13
    Я пока вижу ошибку в ветке с совпадением left и right в таком случае:
    1…1, сервер 1
    2…2, сервер 2
    3…3 сервер 1
    Переносим 2…2 на сервер 1 — всё должно спрессовать в 1…3, сервер 1. Не сделает.

    Повторяю, увижу такой код в своём проекте — пинать буду!
  • Как решить задачу c++?

    @Mercury13
    Хотя я посмотрел на ваш поиск, наверно, он правильный, но мудрё-ёный…
  • Как решить задачу c++?

    @Mercury13
    Ты даже содрать тупо не можешь.
    1. UPPER_bound.
    2. Если begin() — выдать ошибку. Иначе --.
  • Как решить задачу c++?

    @Mercury13
    У вас настолько страшный код, что глаза ломаются разбирать, где тут ошибка.
  • Как решить задачу c++?

    @Mercury13
    А тут уже ищите, где вы неправильно делаете поиск.
    Допустим, у нас 5 блоков на одном сервере — 1→(конец 5, сервер 1), правильно?
    Тогда lower_bound блока 3 даёт end(), и мгновенно выдаётся результат «транзакция невозможна».
    А я писал, как должен проводиться поиск в этом варианте, разуйте глаза.
  • Как решить задачу c++?

    @Mercury13
    Ну а связным спискам есть два применения.
    1. Объекты уже созданы, и хотелось бы их группировать то так, то этак. Например, в структуре данных «объектный пул».
    2. Объекты плохо выдерживают перенос. Жёсткое реальное время, какие-нибудь системные штучки, или просто много… И то часто лучше deque или vector<unique_ptr<>>.
  • Как решить задачу c++?

    @Mercury13
    Связные списки, если объект мал и «туп», не оправданы. Vector и тот лучше.
    Почему map: у него вставка, поиск и удаление за O(log n).
    Элементы в map всегда отсортированы (так действует любое дерево поиска, самобалансирующееся или нет). Функции поиска в map называются так же, как стандартные функции двоичного поиска — lower_bound и upper_bound. Это начало и конец диапазона равных: если в multimap’е будет 1,3,3,3,5,7, то lower_bound 3-ки даст первую 3-ку, upper_bound — элемент за ними (5). Если ищем что-то отсутствующее — например, 6 — оба укажут на 7-ку. Учите, как они работают, эти функции, это важно!
  • Как решить задачу c++?

    @Mercury13
    Proshka17,
    Повторяю: не выдерживается асимптотическая сложность.
    И этот код тоже не выдерживает: map является деревом поиска, а вы по ней делаете линейный поиск.
  • Как решить задачу c++?

    @Mercury13
    А с map — там всё просто.
    struct ServerInfo {
      int right, server;
    }
    using MChunks = std::map<int, ServerInfo>;
    MChunks chunks;
  • Как решить задачу c++?

    @Mercury13
    Код страшен, как чёрт: я вижу код начинающего, который пробует сделать сложную систему.
    Побочные эффекты, возврат значения в консоль, простыня кода без попыток её прокомментировать или структурировать, и многое другое.
  • Как решить задачу c++?

    @Mercury13
    Да, я забыл про номер сервера. Там же, в second, разумеется.
    НЕЛЬЗЯ; только set/map — иначе не выдерживается асимптотическая сложность. Тебя же это прижало, правильно — перенос двух, трёх, четырёх блоков должен быть эффективнее, чем одного.
  • Количество закрытых ключей (криптография)?

    @Mercury13
    1. Отлично, мы храним это дело неявно. Это главное, и очень хорошее, ваше достижение.
    2. nok % nod != 0 — это стоит делать в самом начале, важная проверка.
    3. Нечего использовать pow. И учтите, что double меньше long long, и если кто-то накопает большое, сверх 52 битов, простое число — будет wrong result.
    4. div++ не годится, стоило бы работать чуть менее топорно.
    5. Условие остановки цикла — div² > nok. Это главный вопрос, почему проблемы со временем.
    6. Очередной вопрос: остальные тесты верно прошли? Меня напрягает строка nod = nod / (pow((double)div, (double)power)); Мы делим НОД на степень простого множителя в НОК’е, цифру, на которую он, скорее всего, не делится.
    7. Я бы сделал функцию testDivisor(): сначала testDivisor(2), потом по всем нечётным до квадратного корня, а потом — то, что осталось от НОК. Это позволит делать и другие мелкие ускорители: например, проверять 2, 3, 5, а затем 6n+1 и 6n+5.
    8. Эта функция явно не inline, а значит, её лучше вынести из тела класса.
    9. Объект без ООП в стиле Java?
    10. Извините, что написал про 2ULL — 1ULL << counter, разумеется.
    11. Всё ещё функция возвращает свой результат в консоль — некузяво!
  • Количество закрытых ключей (криптография)?

    @Mercury13
    Proshka17,
    1. Map тут только для упрощения кода; оптимум — старый добрый массив на 64 места.
    2. Си++11 сильно улучшит жизнь. И даже typedef pair. А то у тебя из Си++11 один auto.
    3. Класс возвращает результат в консоль — не комильфо.
    4. На других тестах реально работало? Лучше написать как nokm[it->first] - it->second — если, по-твоему, верна именно разность, а не единица.
    5. Пока похоже на переполнение в pow.
    6. C++17 как-то действующий начиная с 8.0, а стабильный — с 9.0. Хотя у тебя нет 17-го.
    7. Не может long long быть произведением 64 разных простых → хватит 2ULL << counter.
  • Как заставить смартфон "засветить" свой mac-адрес?

    @Mercury13
    Расположить рядом точку доступа, наверное? Смартфон не будет орать в эфир, пока эту самую радиоточку не увидит.
  • Как описать неравномерное движение по кругу в виде функции?

    @Mercury13
    Тимур Яхин, Если кусочная, но зависит только от t — по почему нет?
  • Может ли процессор изменять порядок инструкций в программе?

    @Mercury13
    Pantene742, Конечно, для этого есть дополнительное устройство — что не поделаешь для скорости?
  • Зачем нужен MySQL Connector c++?

    @Mercury13
    Proshka17, С Visual Studio не имел дела, но вот документация.
    https://dev.mysql.com/doc/refman/5.7/en/c-api-buil...

    А какие у вас ошибки?