Hei ~ luokkatoverit, tässä artikkelissa perehdytään C:n vektorisäiliöön. Koska vektori on yksi yleisimmin käytetyistä dynaamisista taulukoista Standard Template Libraryssa (STL), se tarjoaa joustavan elementin tallennuksen ja tehokkaat pääsytavat. Aloitamme perustiedoista ja opimme vähitellen sen luomista, alustusta, läpikulkua, tilanhallintaa, lisäystä, poistamista, tarkistusta ja muokkaamista. Yksityiskohtaisten esimerkkien ja analyysien avulla toivomme auttavan lukijoita täysin ymmärtämään ja hallitsemaan vektorin käytön taidot ja varotoimet.
Vektori on sekvenssisäiliö, joka edustaa muuttuvan kokoista taulukkoa.
Kuten taulukot, myös vektorit käyttävät jatkuvaa tallennustilaa elementtien tallentamiseen. Tämä tarkoittaa, että voit käyttää alaindeksiä päästäksesi vektorin elementteihin, mikä on yhtä tehokas kuin taulukko. Mutta toisin kuin taulukon, sen kokoa voidaan muuttaa dynaamisesti, ja säilö käsittelee sen koon automaattisesti.
Pohjimmiltaan vektori käyttää dynaamisesti allokoitua taulukkoa elementtiensä tallentamiseen. Kun uusia elementtejä lisätään, taulukon kokoa on muutettava tallennustilan lisäämiseksi. Tämä tehdään varaamalla uusi taulukko ja siirtämällä sitten kaikki elementit tähän taulukkoon. Ajan kannalta tämä on suhteellisen kallis tehtävä, koska vektorin kokoa ei muuteta joka kerta, kun säiliöön lisätään uusi elementti.
Vektorivaraustilan strategia: vektori varaa ylimääräistä tilaa mahdollisen kasvun huomioon ottamiseksi, koska tallennustila on suurempi kuin todellinen tarvittava tallennustila. Eri kirjastot käyttävät erilaisia strategioita tilankäytön ja uudelleenallokoinnin vaihtamiseksi. Mutta joka tapauksessa uudelleenallokoinnin tulee kasvaa logaritmisesti intervallikoon suhteen, jotta elementin lisääminen loppuun tapahtuu vakioajassa.
Siksi vektori vie enemmän tallennustilaa saadakseen kyvyn hallita tallennustilaa ja kasvaa dynaamisesti tehokkaasti.
Verrattuna muihin dynaamisiin sekvenssisäiliöihin (deque, list ja forward_list) vektori on tehokkaampi elementtejä käsiteltäessä, ja elementtien lisääminen ja poistaminen lopussa on suhteellisen tehokasta. Muissa poisto- ja lisäystoiminnoissa, jotka eivät ole lopussa, tehokkuus on vielä alhaisempi. On parempi käyttää yhtenäisiä iteraattoreita ja viittauksia kuin listaa ja forward_list.
STL:n käytössä on kolme ulottuvuutta: sen käyttö, sen ymmärtäminen ja kyky laajentaa sitä. Opimme myös sen seuraavaksi.