Sobes.tech
Middle

Milyen az összetettsége a műveleteknek a std::vector és std::list konténerek esetében C++-ban?

sobes.tech MI

Válasz az MI-től

std::vector

  • Index szerinti hozzáférés: O(1)
  • Hozzáadás a végéhez (push_back): amortizált O(1)
  • Beszúrás vagy törlés a közepén: O(n), mivel az elemek eltolása szükséges
  • Iteráció: O(n)

std::list (kétszárú láncolt lista)

  • Index szerinti hozzáférés: O(n), mivel szekvenciális áthaladás szükséges
  • Bármilyen helyen történő beszúrás és törlés (ha van iterator): O(1)
  • Iteráció: O(n)

Ezért a vector hatékony gyors hozzáféréshez és a végéhez való hozzáadáshoz, míg a lista alkalmas gyakori beszúrásokra és törlésekre a közepén anélkül, hogy az elemeket el kellene tolni.