This paper describes the implementation and performance of a particle flow algorithm applied to 20.2?fb$^{-1}$ of ATLAS data from 8 TeV proton?proton collisions in Run 1 of the LHC. The algorithm removes calorimeter energy deposits due to charged hadrons from consideration during jet reconstruction, instead using measurements of their momenta from the inner tracker. This improves the accuracy of the charged-hadron measurement, while retaining the calorimeter measurements of neutral-particle energies. The paper places emphasis on how this is achieved, while minimising double-counting of charged-hadron signals between the inner tracker and calorimeter. The performance of particle flow jets, formed from the ensemble of signals from the calorimeter and the inner tracker, is compared to that of jets reconstructed from calorimeter energy deposits alone, demonstrating improvements in resolution and pile-up