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

    +60

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    vector <float> items; 
    float *x;
    for(int i = 0; i<100; i++) { 
      x = new float; 
      *x = 1.0f; 
      items.push_back(*x); 
    };

    оттуда...

    Запостил: Try, 25 Сентября 2014

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

    • Когда я вижу такой код, я задаюсь вопросом: как вообще автор до такого додумался? Это же нужно нехилую фантазию иметь...

      И вообще, как можно такой неэффективный код написать? Чем им
      vector <float> items(100, 1.0);
      не угодил?
      Ответить
      • На самом деле, всё логично, если плохо знаешь то, чем пользуешься.
        Наполнять вектор в цикле? Что может быть проще, логичнее и работает во многих языках?
        C++ - ручное управление памятью. Логично, что в вектор надо добавить какой-нибудь объект. Создавать double на стеке - значение убивать, когда переменная умрёт. Следовательно, надо выделить кусочек памяти под значение.
        А *x - это потому, что x и &x не давали скомпилиться, логично же?
        Ответить
      • да и мне не верится. мне кажется пример искусственный
        Ответить
      • Ну вообще-то, если потом нужно хранить и как-то использовать указатели на элементы вектора, код адекватный.
        Ответить
    • Вахуэ.
      Ответить
    • Я понял откуда ноги растут.
      Vector<MutableFloat> items;
      MutableFloat x;
      for (int i=0; i<100; i++) {
      x = new MutableFloat();
      x.setValue(1.0f);
      items.add(x);
      }
      Найдите 3 отличия
      Ответить
      • звёздочка
        чувак её провафлил
        чувак позорит ник и Дельфи
        Ответить

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