C++ Academy · Lektion

std::array med fast størrelse

En sikker erstatning for C-arrays

Lektion 1 af 413 trin

std::array med fast størrelse er en gratis C++ Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i C++ Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. C++ Academy-kurset indeholder 4 lektioner i alt.

Et sikkert C-array

std::array<T, N> er et array med fast størrelse, som kender sin egen størrelse og opfører sig som en rigtig container. Inkludér <array>.

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

Kender sin egen størrelse

Til forskel fra et råt array, der konverteres til en pointer, rapporterer std::array altid sin længde via size().

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

Rangebaseret for-løkke

Da det er en rigtig container, kan du iterere med en rangebaseret for-løkke.

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

Grænsekontrolleret at()

at(i) kaster std::out_of_range ved et ugyldigt indeks, mens operator[] ikke kontrollerer det. Vælg ud fra dine sikkerhedskrav.

#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 og data

Praktiske adgangsfunktioner: front() og back() returnerer henholdsvis det første og det sidste element, mens data() giver en rå pointer til C-API'er.

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

Kan kopieres som værdi

std::array kopieres nemt med =, så hvert element kopieres, i modsætning til rå arrays, der konverteres til pointere.

#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
}

Fungerer med algoritmer

Standardalgoritmer accepterer iteratorer fra std::array; her sorterer vi det.

#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";
}

Udfyldning og sammenligning

fill(value) sætter hvert element, og std::array understøtter også elementvis sammenligning med ==.

#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
}

Størrelsen er en del af typen

Længden N er indbygget i typen, så en funktion, der tager std::array<int,3>, ikke accepterer et array med størrelse 4. Her bliver std::span nyttig senere.

Allokering på stakken

std::array gemmer sine elementer inline, typisk på stakken, uden heap-allokering. Det gør det hurtigt og forudsigeligt til data med fast størrelse.

Array eller vector

Brug std::array, når størrelsen er kendt ved kompilering og er fast. Brug std::vector, når størrelsen kan ændre sig under kørsel.

Hurtig kontrol

Kontrollér din forståelse af std::array.

Opsummering

Du har lært om std::array:

  • En container med fast størrelse, der kender sin størrelse, uden heap-allokering.
  • at() kontrollerer grænser; [] gør ikke.
  • Kan kopieres, sammenlignes og bruges med algoritmer.
  • Størrelsen N er en del af typen.
Gratis at komme i gang

Lær C++ med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
51
Lektioner
203

Ofte stillede spørgsmål

Er lektionen “std::array med fast størrelse” gratis?

Ja — alle 3 lektioner i læringssporet C++ Academy, inklusive “std::array med fast størrelse”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. C++ Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “std::array med fast størrelse”?

En sikker erstatning for C-arrays Du øver dig i C++ Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på C++ Academy?

Der kræves ingen tidligere erfaring. C++ Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “std::array med fast størrelse”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne C++ Academy-lektion?

Ja. Alle C++ Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. std::array med fast størrelse
  2. Grundlæggende om std::span
  3. Videregivelse af spans til funktioner
  4. Grænser og subspans
← Tilbage til C++ Academy