Задать вопрос
Ответы пользователя по тегу C++
  • Найти медиану двух отсортированных массивов?

    @res2001
    Developer, ex-admin
    В таком объеме данных наверняка очень большое количество повторяющихся значений.
    Можно попробовать собрать некую статистику:
    значение - количество
    по каждому значению.
    Отсортировать и искать медиану по статистическим значениям.
    Объем, видимо, будет все равно большой, но уже не террабайты.
    Или, не собирать статистику, а двигаясь одновременно по обоим массивам считать количество значений. На каком элементе достигнете медианного положения - это значение и будет медианой.
    Если значения в массиве одной длины (например 32 битные целые), то исходя из общего объема массивов легко вычислить положение медианного элемента. Так же пользуясь тем, что массивы отсортированы можно довольно быстро находить количество каждого конкретного значения.
    Ответ написан
    Комментировать
  • Struct - что это?

    @res2001
    Developer, ex-admin
    Если я в классе до модификатора public укажу эти конструкторы, как ими пользоваться вообще?

    Этот прием используется для создания классов, которые могут создаваться только друзьями или статическими публичными методами класса, например для гарантирования создания только одного объекта класса (паттерн singleton). Обычно кроме конструкторов в private секцию помещают и деструктор, а так же делают friend или static метод для получения экземпляра класса и для его уничтожения.
    Кроме того конструктор и деструктор можно поместить в секцию protected класса - тогда экземпляры класса смогут создавать только потомки.
    Ответ написан
    Комментировать
  • Что значит использование внутриклассового инициализатора в конструкторе?

    @res2001
    Developer, ex-admin
    Может имеется ввиду список инициализации членов класса в конструкторе?
    class A { 
    int A,B;
    A() : A(0), B(0) {};
    ...
    }

    Если нет, то требуется больше информации. Вы то сами где это нашли? В каком контексте?
    Ответ написан
    Комментировать
  • Почему не получается полностью перегрузить оператор =?

    @res2001
    Developer, ex-admin
    В первом случае с ошибкой - у оператора присваивания другая сигнатура - там должна быть ссылка. В вашем случае как-то так:
    void operator=(const char *& cstr)
    Компилятор не находит подходящего оператора присваивания, отсюда ошибка.
    Во втором случае - вы сделали подходящий конструктор и компилятор им воспользовался. Но лучше этот конструктор определить как конструктор копирования:
    MyExpirementalString(const char *& cstr)
    Ответ написан
    Комментировать
  • Какой результат будет?

    @res2001
    Developer, ex-admin
    Обычно такую конструкцию используют для преобразования числа из строкового представления в числовое. Например функции типа atoi как раз используют такой подход.
    Ответ написан
    Комментировать
  • [linux] как выделить больше памяти/ресурcов для приложения?

    @res2001
    Developer, ex-admin
    Распараллеливать смысла нет - дисковые операции плохо паралляться, т.к. диск - медленное устройство. Основной тормоз в вашем случае именно он. Читайте не построчно, а большими блоками, кратными размеру кластера, например по 4/8/16Кб, этим сократите количество дисковых операций. Код конечно усложниться. В прошлом вопросе вам Oleg Shevelev это уже писал.
    Для распараллеливания можно использовать асинхронный IO, но, имхо, это еще больше усложнит код, скорее всего для вашей задачи это не нужно (должно помочь чтение большими порциями), т.к. дальнейшие операции с прочитанной строкой тривиальны.
    И кстати, можно не делать чтение файла на С++, если хорошо знаете Матлаб делайте на нем по тому же алгоритму - т.к. дисковые операции основной тормоз, то преимущества от использования С++ практически не будет.

    А вообще система отдает программе столько ресурсов сколько ей требуется, если ресурсов не хватает - обычно программа завершается с ошибкой.
    Ответ написан
    6 комментариев
  • Упражнение из книги Страуструпа. Программа мини-калькулятор. Цифры записанные в строковом формате. Что имеется ввиду в данном контексте?

    @res2001
    Developer, ex-admin
    Числа в строковом формате - да просто string. Чтоб производить над ними арифметические действия нужно преобразовать в число - см. std::atoi и т.п.
    Немного забегая вперед - преимущество ввода в строковом формате в том, что можно все выражение записать в одной строке, а потом эту одну строку парсить. Т.е. можно сделать универсальный калькулятор, которые воспринимает не два аргумента и операцию, а сложные выражения. Кроме простых действий в этом случае в калькулятор можно прикрутить вычисления разнообразных математических функций и т.п.
    Ответ написан
    Комментировать
  • Причина бесконечного вывода несвязанных символов?

    @res2001
    Developer, ex-admin
    Причин много:
    1.В функции addressSearch в цикле ты читаешь в name ввод пользователя в цикле, затем присваиваешь адрес name в массив. Тут ошибка в том, что name у тебя все время одна и та же переменная и весь массив у тебя будет заполнен одним и тем же значением - адресом name. На каждой итерации цикла после ввода, name будет иметь свое значение, но в следующей итерации это значение затрется следующим вводом. Таким образом в address на выходе из функции ты будешь иметь в каждом элементе адрес name, который ссылается на один и тот же объект, содержащий последний ввод пользователя.

    2.В функции addressSearch переменные name и address объявлены как локальные, после выхода из функции этих переменных уже не существует, а ты возвращаешь из функции адрес не существующей переменной. Поэтому и бардак в выводе.
    Ответ написан
    1 комментарий
  • Какую выбрать среду для написания кода на С++?

    @res2001
    Developer, ex-admin
    А отлаживать то же в notepad++ будешь? А контекстная справка и прочие плюшки?
    У микрософта всегда была хорошая среда разработки. Не так уж там все и сложно.
    Из других вариантов: NetBeans, Eclips. Но по мне для винды VS лучше.
    Ответ написан
    Комментировать
  • Как конкретного наследника связать с конкретным родителем?

    @res2001
    Developer, ex-admin
    А если с наследованием, то СОМ1 и СОМ2 тут явно лишние - все действия надо делать через Devы.
    Ответ написан
    Комментировать
  • Наследование интерфейсов С++?

    @res2001
    Developer, ex-admin
    В go() передается указатель на IServer, а в iServer нет метода start.
    Ответ написан
    2 комментария
  • Будет ли рассчитано значение выражения strlen("str") на этапе компиляции или при выполнении?

    @res2001
    Developer, ex-admin
    Вряд ли.
    Ответ написан
    Комментировать