C++ Academy · Oppitunti

Kiinteän koon std::array

Turvallinen korvaaja C-taulukoille

Oppitunti 1/413 vaihetta

Kiinteän koon std::array on ilmainen C++ Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu C++ Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. C++ Academy-kurssilla on yhteensä 4 oppituntia.

Turvallinen C-taulukko

std::array<T, N> on kiinteän kokoinen taulukko, joka tuntee oman kokonsa ja toimii asianmukaisen säiliön tavoin. Ota käyttöön <array>.

#include <iostream>
#include <array>
int main() {
    std::array<int, 3> a = {1, 2, 3};
    std::cout << a[0] << " " << a.size() << "\n";
}

Tuntee kokonsa

Toisin kuin raakamatriisi, joka muuttuu osoittimeksi, std::array ilmoittaa pituutensa aina funktion size() avulla.

#include <iostream>
#include <array>
int main() {
    std::array<double, 4> a{};
    std::cout << a.size() << "\n"; // 4
}

Aluepohjainen for-silmukka

Koska kyseessä on varsinainen säiliö, voitte käydä sen läpi aluepohjaisella for-silmukalla.

#include <iostream>
#include <array>
int main() {
    std::array<int, 3> a = {10, 20, 30};
    for (int x : a) std::cout << x << " ";
    std::cout << "\n";
}

Rajat tarkistava at()

at(i) heittää poikkeuksen std::out_of_range, jos indeksi on virheellinen, kun taas operator[] ei tarkista rajoja. Valitkaa menetelmä turvallisuustarpeiden mukaan.

#include <iostream>
#include <array>
int main() {
    std::array<int, 2> a = {1, 2};
    try { a.at(5); }
    catch (const std::out_of_range&) { std::cout << "out of range\n"; }
}

front, back ja data

Käteviä käyttöfunktioita: front() ja back() palauttavat ensimmäisen ja viimeisen alkion, ja data() antaa C-rajapintojen tarvitseman raakaosoittimen.

#include <iostream>
#include <array>
int main() {
    std::array<int, 3> a = {7, 8, 9};
    std::cout << a.front() << " " << a.back() << "\n";
}

Kopioitavissa arvona

std::array voidaan kopioida suoraan operaattorilla =, jolloin jokainen alkio kopioidaan. Raakataulukot sen sijaan muuttuvat osoittimiksi.

#include <iostream>
#include <array>
int main() {
    std::array<int, 3> a = {1, 2, 3};
    std::array<int, 3> b = a; // full copy
    b[0] = 99;
    std::cout << a[0] << " " << b[0] << "\n"; // 1 99
}

Toimii algoritmien kanssa

Standardialgoritmit hyväksyvät std::array-iteraattorit. Tässä lajittelemme taulukon.

#include <iostream>
#include <array>
#include <algorithm>
int main() {
    std::array<int, 4> a = {4, 1, 3, 2};
    std::sort(a.begin(), a.end());
    for (int x : a) std::cout << x << " ";
    std::cout << "\n";
}

Täyttäminen ja vertailu

fill(value) asettaa jokaisen alkion arvoksi annetun arvon. std::array tukee myös alkioittaista vertailua operaattorilla ==.

#include <iostream>
#include <array>
int main() {
    std::array<int, 3> a{};
    a.fill(5);
    std::array<int, 3> b = {5, 5, 5};
    std::cout << (a == b) << "\n"; // 1
}

Koko on osa tyyppiä

Pituus N on määritelty osaksi tyyppiä, joten funktion, joka ottaa vastaan tyypin std::array<int,3>, parametriksi ei voi antaa koon 4 taulukkoa. Myöhemmin std::span auttaa tässä.

Pinoallokointi

std::array tallentaa alkionsa suoraan itseensä, yleensä pinoon, eikä varaa muistia keosta. Siksi se on nopea ja ennakoitava kiinteäkokoiselle datalle.

Taulukko vai vector

Käyttäkää std::array-säiliötä, kun koko tiedetään käännösaikana ja se pysyy muuttumattomana. Käyttäkää std::vector-säiliötä, kun koko voi muuttua ajonaikana.

Pikatarkistus

Tarkistakaa, mitä opitte std::array-tyypistä.

Kertaus

Opitte seuraavat asiat std::array-tyypistä:

  • Se on kiinteäkokoisen ja koon tunteva säiliö, joka ei varaa muistia keosta.
  • at() tarkistaa rajat, mutta [] ei.
  • Sen voi kopioida ja sitä voi verrata, ja se toimii algoritmien kanssa.
  • Koko N on osa tyyppiä.
Aloita maksutta

Opi C++ tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
51
Oppitunnit
203

Usein kysytyt kysymykset

Onko oppitunti ”Kiinteän koon std::array” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa C++ Academy-oppimispolun 3 oppituntia, myös oppitunnin “Kiinteän koon std::array”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. C++ Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Kiinteän koon std::array”?

Turvallinen korvaaja C-taulukoille Harjoittelet C++ Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni C++ Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin C++ Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”Kiinteän koon std::array”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä C++ Academy-oppitunnilla?

Kyllä. Jokainen C++ Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Kiinteän koon std::array
  2. std::span-perusteet
  3. Span-näkymien välittäminen funktioille
  4. Rajojen tarkistus ja alispanit
← Takaisin: C++ Academy