STD::arreglo en C++

La array es una colección de objetos homogéneos y este contenedor de array se define para arrays de tamaño constante o (tamaño estático). Este contenedor envuelve arrays de tamaño fijo y la información de su tamaño no se pierde cuando se declara a un puntero. 
Para utilizar arreglos, necesitamos incluir el encabezado del arreglo: 
 

 #include <array> 

Veamos un ejemplo.  
 

CPP

// CPP program to demonstrate working of array
#include <algorithm>
#include <array>
#include <iostream>
#include <iterator>
#include <string>
using namespace std;
 
int main() {
 
  // construction uses aggregate initialization
  // double-braces required
  array<int, 5> ar1{{3, 4, 5, 1, 2}};
  array<int, 5> ar2 = {1, 2, 3, 4, 5};
  array<string, 2> ar3 = {{string("a"), "b"}};
 
  cout << "Sizes of arrays are" << endl;
  cout << ar1.size() << endl;
  cout << ar2.size() << endl;
  cout << ar3.size() << endl;
   
  cout << "\nInitial ar1 : ";
  for (auto i : ar1)
    cout << i << ' ';
 
  // container operations are supported
  sort(ar1.begin(), ar1.end());
 
  cout << "\nsorted ar1 : ";
  for (auto i : ar1)
    cout << i << ' ';
 
  // Filling ar2 with 10
  ar2.fill(10);
 
  cout << "\nFilled ar2 : ";
  for (auto i : ar2)
    cout << i << ' ';
 
 
  // ranged for loop is supported
  cout << "\nar3 : ";
  for (auto &s : ar3)
    cout << s << ' ';
 
  return 0;
}
Producción: 

Sizes of arrays are
5
5
2

Initial ar1 : 3 4 5 1 2 
sorted ar1 : 1 2 3 4 5 
Filled ar2 : 10 10 10 10 10 
ar3 : a b

 

Esta array STL de C++ es una especie de contenedor secuencial y no se usa demasiado en la programación regular o en la programación competitiva, pero a veces su función miembro le brinda una ventaja superior sobre la array normal regular que usamos en nuestra vida diaria. Entonces, estamos discutiendo algunas de las funciones miembro importantes que se usan con este tipo de array:

Las funciones miembro para la plantilla de array son las siguientes :

Sintaxis : array<tipo_objeto, tamaño_arr> nombre_arr;

a) [] Operador : Esto es similar a la array normal, lo usamos para acceder al almacén de elementos en el índice ‘i’.

Ex:   

C++

#include <iostream>
#include <array>
using namespace std;
 
int main() {
    array <char , 3> arr={'G','f','G'};
    cout<<arr[0] <<" "<<arr[2];
    return 0;
}
Producción

G G

b) función front() y back(): estos métodos se utilizan para acceder directamente al primer y último elemento del arreglo.

C++

#include <iostream>
#include <array>
using namespace std;
 
int main() {
    array <int , 3> arr={'G','f','G'};  // ASCII val of 'G' =71
    cout<<arr.front() <<" "<<arr.back();
    return 0;
}
Producción

71 71

c) función de intercambio ( ): esta función de intercambio se utiliza para intercambiar el contenido de las dos arrays.

Ex: 

C++

#include <iostream>
#include <array>
using namespace std;
 
int main() {
    array <int , 3> arr={'G','f','G'};  // ASCII val of 'G' =71
    array <int , 3> arr1={'M','M','P'}; // ASCII val of 'M' = 77 and 'P' = 80
    arr.swap(arr1);  // now arr = {M,M,P}
    cout<<arr.front() <<" "<<arr.back();
    return 0;
}
Producción

77 80

d) función de vacío(): esta función se utiliza para verificar si la array STL declarada está vacía o no, si está vacía, devuelve verdadero, de lo contrario, falso.

Ex: 

C++

#include <iostream>
#include <array>
using namespace std;
 
int main() {
    array <int , 3> arr={'G','f','G'};  // ASCII val of 'G' =71
    array <int , 3> arr1={'M','M','P'}; // ASCII val of 'M' = 77 and 'P' = 80
    bool x = arr.empty(); // false ( not empty)
    cout<<boolalpha<<(x);
    return 0;
}
Producción

false

e) Función at(): esta función se usa para acceder al elemento almacenado en una ubicación específica, si intentamos acceder al elemento que está fuera de los límites del tamaño de la array, arroja una excepción. 

Ex: 

C++

#include <iostream>
#include <array>
using namespace std;
 
int main() {
    array <int , 3> arr={'G','f','G'};  // ASCII val of 'G' =71
    array <int , 3> arr1={'M','M','P'}; // ASCII val of 'M' = 77 and 'P' = 80
    cout<< arr.at(2) <<" " << arr1.at(2);
    //cout<< arr.at(3); // exception{Abort signal from abort(3) (SIGABRT)}
    return 0;
}
Producción

71 80

f) Función fill( ): Esta es especialmente usada para inicializar o llenar todos los índices del arreglo con un valor similar.

Ex:

C++

#include <iostream>
#include <array>
using namespace std;
 
int main() {
    array <int , 5> arr;
    arr.fill(1);
    for(int i: arr)
       cout<<arr[i]<<" ";
    return 0;
}
Producción

1 1 1 1 1 

g) función size() o max_size() y sizeof(): tanto size() como max_size() se usan para obtener el número máximo de índices en la array, mientras que sizeof() se usa para obtener el tamaño total de la array en bytes .

C++

#include <iostream>
#include <array>
using namespace std;
 
int main() {
    array <int , 10> arr;   
    cout<<arr.size()<<'\n'; // total num of indexes
    cout<<arr.max_size()<<'\n'; // total num of indexes
    cout<<sizeof(arr); // total size of array
    return 0;
}
Producción

10
10
40

h) data( ) : Esta función devuelve el puntero al primer elemento del objeto de array. Porque los elementos de la array se almacenan en ubicaciones de memoria contiguas. Esta función data( ) nos devuelve la dirección base del objeto de tipo string/char.

Ex: 

C++

#include <iostream>
#include <cstring>
#include <array>
 
using namespace std;
 
int main ()
{
  const char* str = "GeeksforGeeks";
  array<char,13> arr;
  memcpy (arr.data(),str,13);
  cout << arr.data() << '\n';
  return 0;
}
Producción

GeeksforGeeks

I) c begin( ) y cend( ) : vaya a este enlace gfg: Click_me

Publicación traducida automáticamente

Artículo escrito por Shantanu Sharma. y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *