# 7.1 - std::array e std::vector

C arrays não são muito flexíveis, algo que dificulta o desenvolvimento de um programa.

Felizmente, no C++ temos outras opções (que você deve usar): O std::array e std::vector

# Exemplos







































#include <iostream>
#include <array>

int main ()
{
    /*|--------------------------------------|
     *|                                      |
     *|           He4rt Developers           |
     *|                                      |
     *|--------------------------------------|
     */

    /**
      * std::array é o primeiro container que iremos ver.
      * A STL(Standard Template Library) oferece uma série de containers.
      * Um container é uma estrutura que pode conter uma coleção de objetos.

      * O std::array é uma Struct <link pra seção de struct> que possui um C array dentro dela.
      * Possui uma implementação simples e várias funções que facilitam o manejo de arrays.
      * O tamanho do std::array precisa ser conhecimento durante a compilação.

      * Recomenda-se que você use esse tipo de array ao invés de C arrays.
    */

    /* Criando um std::array com 3 posições que podem conter elementos do tipo std::string */
    std::array<std::string, 3> meu_array = {"Hello ", "world", "!"};

    /* Mostrando os elementos do array, funciona igual o C array */
    for(int i = 0; i < meu_array.size(); ++i) {
      std::cout << meu_array[i];
    }

    /* Também podemos usar um ranged loop para percorrer o array */
    for(std::string elemento : meu_array) {
      std::cout << element;
    }
}
















































#include <iostream>
#include <vector>

int main ()
{
    /*|--------------------------------------|
     *|                                      |
     *|           He4rt Developers           |
     *|                                      |
     *|--------------------------------------|
     */

    /*
     * std::vector é um array que pode mudar de tamanho durante a execução do programa
     * Isso é possível através do uso de ponteiros <link para seção de ponteiros>
     * Ao contrário do C array e std::array, o tamanho do std::vector não precisa
     * ser conhecido durante a compilação
    */

    /* Criando um std::vector de floats */
    std::vector<float> meu_vector;

    /*
     * Foi criado um std::vector vazio, sendo assim, o tamanho dele é 0
     * Podemos adicionar elementos no std::vector usando as funções push_back() e emplace_back()
     * O std::vector aumenta e diminui de tamanho conforme você insere e remove elementos
    */
    meu_vector.push_back(3.14159);

    /*
     * Agora o meu_vector tem o tamanho 1
     * Podemos verificar o tamanho do vector do mesmo jeito que
     * vericamos o tamanho do std::array. Usando a função size()
    */
    std::cout << meu_vector.size() // 1

    /*
     * Podemos percorrer o std::vector do mesmo jeito que percorremos o std::array
    */

    meu_vector.push_back(2.71828)
    meu_vector.push_back(1.30357)

    for(double valor : meu_vector) {
      std::cout << valor;
    }
}