1. C++ / Говнокод #14398

    +9

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    #include <iostream>
    #include <iterator>
    #include <algorithm>
    #include <array>
    #include <memory>
    using namespace std;
    
    template<size_t N1, size_t N2, class T1, class T2,
    class T = typename common_type<T1, T2>::type>
    T (*concatCArray(const T1(&arr1)[N1], const T2(&arr2)[N2]))[N1+N2]{
      const auto result = (T(*)[N1+N2]) new T[N1+N2];
      copy(arr2, end(arr2), copy(arr1, end(arr1), *result));
      return result;
    }
    template<std::size_t N, class T>
    void viewCArrayPtr(T (*arr)[N]){
      copy(*arr, end(*arr), ostream_iterator<T>(cout, " "));
    }
    template<size_t N1, size_t N2, class T1, class T2,
    class T = typename remove_const<typename common_type<T1, T2>::type>::type>
    array<T, N1+N2> concatArray(const array<T1, N1> &arr1, const array<T2, N2> &arr2){
      array<T, N1+N2> result;
      copy(begin(arr2), end(arr2), copy(begin(arr1), end(arr1), result.begin()));
      return result;
    }
    template<std::size_t N, class T>
    void viewArray(const array<T, N> arr){
      copy(begin(arr), end(arr), ostream_iterator<T>(cout, " "));
    }
    
    int main() {
      int arr1[]{0,1,2,3}, arr2[]{4,5,6};
      auto ca = concatCArray(arr1, arr2);
      unique_ptr<int[]> safe(*ca);
      viewCArrayPtr(ca);
      cout<<endl;
      array<float, 2> a {1,2.5};
      array<int, 3> b{3, 4, 5};
      viewArray(concatArray(a, b));
      return 0;
    }

    От туда.
    http://ideone.com/3KjycI

    Запостил: LispGovno, 22 Января 2014

    Комментарии (15) RSS

    • Далеко в Японии есть легенда, что скоро любое говно в ДНК-коде можно будет вылечить вирусами.
      Ответить
    • Векторы автор по религиозным соображениям не признает? Только массивы заранее известной длины, только хардкор? :)
      Ответить
      • Имхо автор ламер.
        Ответить
        • Не, у него просто профессианальная деформация. Во всех примерах юзает захардкоженные массивы, вот ему и кажется, что они нужны всем и везде... Встретится с реальными задачами - массивы забудутся, а руки сами собой выпрямятся ;)
          Ответить
          • Да этож бред. Кому нужны массивы фиксированной длины? Это настолько редкие задачи, что имхо это лажа полная и почти нигде не применяется. Вот я не помню, чтобы у меня был массив фиксированного размера когда-нибудь.
            Ответить
            • Я игру пятнашки делал там массив фиксированного размера.
              Ответить
              • А проверки выхода за пределы массива?
                Ответить
              • > Я игру пятнашки делал там массив фиксированного размера.
                Ну скучно же в 4х4 постоянно рубиться...
                Ответить
    • Киньте ссылку пжлст
      Ответить
      • ёбаный гугл не хочет принимать template<size_t N1, size_t N2, class T1, class T2,
        class T = typename common_type<T1, T2>::type>
        T (*concatCArray(const T1(&arr1)[N1], const T2(&arr2)[N2]))[N1+N2]{
        const auto result = (T(*)[N1+N2]) new T[N1+N2];
        copy(arr2, end(arr2), copy(arr1, end(arr1), *result));
        return result;
        Ответить
        • А, так это из той же темы, это ты своё выложил?
          Ответить
        • > ёбаный гугл не хочет принимать
          Это гуглобан.
          Ответить
          • Подозрительный запрос: ваш запрос выглядит так, будто вы не человек, а крестоблядь. Пожалуйста подтвердите, что вы человек, решив простую задачку: что должен вывести код ++i+++i?

            (правильный ответ - "чё это за хуйня?")
            Ответить
    • Код мой, говна не много. В матрицах и векторах такое в гейдеве регулярно применяют. Написано ради развлечения в качестве примера одному троллю. Повода выкладывать не вижу.
      Ответить

    Добавить комментарий