• Почему появляется ошибка компилятора '?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    1 комментарий
  • Что значит ::value_type в примере?

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

    Именно этот пример неудачный, т.к. value_typeвы берёте опять же из явно указанного шаблона. Если вы поменяете тип P например на Point<double>, то и тип X придётся изменить.

    Вот пример получше:

    typedef Point<int> MyPoint;
    
    MyPoint P = {1, 2};
    MyPoint::value_type X = P.x;


    Теперь тип достаточно изменить в одном месте, а не в каждом куске кода, где он используется.
    Ответ написан
    Комментировать
  • Как используется в примере Lambda функция?

    function<double(double)> -- это тип функции, которая принимает один параметр double и возвращает double.
    Создать значение функционального типа можно с помощью синтаксиса лямбда-выражений. Простейший пример:
    function<double(double)> f;
    f = [](double x){ return x * 2; };
    f(5);  //=> 10
    f = [](double x){ return x * x; };
    f(5);  //=> 25

    Функция eval в вашем примере -- это функция высшего порядка, которая принимает переменную p типа функции и переменную x типа double. Она определена так, что eval(lambda_x3,2.0) -- это то же самое, что и lambda_x3(2.0).
    Ответ написан
    3 комментария
  • Как создать обьект с std::initializer_list?

    @Mercury13
    Программист на «си с крестами» и не только
    Это нельзя, initializer_list — это тонкая прослойка, позволяющая инициализировать вектор из линейного массива. Ни на что большее она не нужна.

    У вас есть какая-то странность — SearchVektor<unsigned int> мы инициализируем из вектора vector<int>. Это вообще ни в какие ворота не пишется. Для данного случая вам нужно…

    1. vector<int> liste превратить в vector<unsigned int>.
    2. Написать конструктор, работающий из временного вектора: SearchVektor(std::vector<T> && t ). Такой конструктор будет очень быстрым, ибо дерёт всю информацию из t, оставляя в нём пустоту.
    3. Объявить liste временным —
    return  SearchVektor< unsigned  int> (std::move(liste));
    Ответ написан
    4 комментария
  • Как написать функцию которая может не вернуть значение?

    @Mercury13
    Программист на «си с крестами» и не только
    Object* find (const Object& o)
    {
        /* Поиск, если нашли */
       return link;
       /* Если не нашли? */
       return NULL; // Теперь можно
    }
    Ответ написан
    5 комментариев
  • Как посчитать сумму с помощью thread?

    @res2001
    Developer, ex-admin
    Вы в каждом потоке считаете полную сумму, а надо в каждый поток передавать свой диапазон n0-n1, отличный от других. И избавьтесь от мьютексов - выделите для каждого потока свое место куда он будет складывать сумму. Это намного увеличит производительность. После того как все потоки отработают в главном останется только сложить суммы.
    Кстати, можете посмотреть в сторону OpenMP - эта библиотека для подобных задач хорошо подходит.
    Ответ написан
    2 комментария
  • Что же мне выбрать?

    Если бы у меня сейчас был такой выбор, я бы однозначно поехал в мск. Это куда более полезные связи, различные хакатоны и аппетитные компании для дальнейшей стажировки.
    Ответ написан
    Комментировать
  • Какая строка соответствует регулярному выражению?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    символ '.' равноценен одному любому символу. Так что вара регулярка покрывает все выражение из трех символов начинающиеся на 'a' и заканчивающиеся на 'c'.
    Ответ написан
    Комментировать
  • В чем разница между __init__ и __call__ ?

    ali_aliev
    @ali_aliev
    Разработчик на Django/Python, JavaScript
    __init__ это обычный конструктор, __call__ вызов объекта как функцию. Изначально необходимо понять, что все в питоне является объектом в том числе и функции, поэтому метод __call__ есть и у функций. Этот факт очень легко проверить:

    >>> def name():
    ...     pass
    ...
    >>> dir(name)
    ['__call__', ...


    Если вы создадите класс с методом __call__ и создадите объект, у вас объект "превратится" в функцию. Например:

    >>> class Name(object):
    ...     def __call__(self, first, second):
    ...         return first + second
    ...
    >>> f = Name()
    >>> f(1,2)
    3
    >>>


    В питоне нет магических методов (как их принято называть в пхп). Есть например методы для перегрузки операторов (__getitem__, __setitem__, __index__), протокол итерации (__iter__, __next__), протокол контекстных менеджеров (__exit__, __enter__), управляемые атрибуты (__getattr__, __setattr__, __slots__, __getattribute__), протоколы дескрипторов (__get__, __set__, __delete__) ну и т.д. :)

    P.S. как всегда рекомендую Лутца, там все очень подробно расписано
    Ответ написан
    Комментировать