Кресты / Говнокод #23835 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
class PriceCache {
public:
  FlightStorage(const std::size_t count) {
    for (std::size_t i = 0; i < count; ++i) {
      flights.emplace_back(FlightCache::get(i));
      prices.emplace_back(&flights.back(), Price::getFor(flights.back()));
    }
  }

private:
  std::vector<Flight> flights;
  std::vector<const Flight *, double> prices;
};

"случайные сегфолты при обращении к PriceCache::prices"

Запостил: Elvenfighter Elvenfighter, (Updated )

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

    • class PriceCache {
      public:
        PriceCache(const std::size_t count) {
          for (std::size_t i = 0; i < count; ++i) {
            flights.emplace_back(FlightCache::get(i));
            prices.emplace_back(&flights.back(), Price::getFor(flights.back()));
          }
        }
      
      private:
        std::vector<Flight> flights;
        std::vector<std::pair<const Flight *, double>> prices;
      };
      Ответить
  • Эпично. Указатели слишком опасны, нужно использовать std::reference_wrapper.
    Починил, проверь
    flights.reserve(count);
    // опционально, но желательно
    prices.reserve(count);
    Ответить

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

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8