Ce face std::to_array
Cu std::array trebuie de obicei să scrii și tipul, și numărul de elemente. std::to_array le deduce singură: auto a = std::to_array({1, 2, 3}); dă un std::array<int, 3>. Poți alege tipul elementelor și lăsa doar dimensiunea dedusă: std::to_array<long>({1, 2}).
Este utilă și pentru a transforma un tablou C existent sau un text literal într-un std::array (pentru text, rezultatul include și caracterul de final '\0').
Parametri
| Parametru | Descriere |
|---|---|
tablou |
Un tablou C sau o listă între acolade. |
Ce returnează
Un std::array cu copii ale elementelor.
Exemple
Exemplul 1: Dimensiune dedusă automat
#include <array>
#include <print>
int main() {
auto prime = std::to_array({2, 3, 5, 7, 11});
std::println("{} numere: {}", prime.size(), prime);
auto mari = std::to_array<long long>({1, 2, 3});
std::println("sizeof(element) = {}", sizeof(mari[0]));
int vechi[] = {10, 20, 30};
auto nou = std::to_array(vechi);
std::println("{}", nou);
auto litere = std::to_array("Iași"); // include și '\0'
std::println("Text de {} octeți (cu '\\0')", litere.size());
}
Rezultat
5 numere: [2, 3, 5, 7, 11]
sizeof(element) = 8
[10, 20, 30]
Text de 6 octeți (cu '\0')
Greșeli frecvente
- Uiți că un text literal se termină cu
'\0':std::to_array("abc").size()este 4, nu 3. Iar literele cu diacritice ocupă câte 2 octeți în UTF-8.
Comenzi înrudite
std::array: Tablou cu dimensiune fixă, cunoscută la compilare, cu interfața unui container (size, at, begin, end).std::span: O „fereastră” spre elemente consecutive din memorie (vector, array, tablou C), fără copiere și fără să le dețină.