Arrays e Vectors
Um array de estilo C tem um tamanho fixo em tempo de compilação e nenhuma forma embutida de crescer. sizeof(array) / sizeof(array[0]) é o idiom clássico (ainda que um pouco estranho) para calcular seu comprimento, já que um array não rastreia seu próprio tamanho em tempo de execução.
#include <iostream>
using namespace std;
int main() {
int numbers[5] = {1, 2, 3, 4, 5};
cout << "numbers[2] = " << numbers[2] << endl;
cout << "size = " << sizeof(numbers) / sizeof(numbers[0]) << endl;
return 0;
}numbers[2] = 3 size = 5
std::vector
std::vector é a coleção crescente principal do C++ — ele gerencia seu próprio armazenamento alocado no heap e se redimensiona automaticamente à medida que você faz push_back de elementos nele. É um template, então vector<int> e vector<string> são ambas instanciações válidas e type-safe.
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> numbers = {1, 2, 3};
numbers.push_back(4);
numbers.push_back(5);
for (int n : numbers) {
cout << n << " ";
}
cout << endl;
cout << "size = " << numbers.size() << endl;
return 0;
}1 2 3 4 5 size = 5
A seguir: strings — std::string, um tipo de string real, owned e mutável.
Practice exercise
Dado um vector<int> numbers = {4, 8, 15, 16}, some todos os seus elementos com um range-based for loop e imprima o total.