Массивы

Массивы в языке C

Часто возникает необходимость хранить не одну переменную, а набор однотипных переменных. Например, список учащихся класса – это набор данных строкового типа, координаты вершин многоугольника или коэффициенты многочлена – это набор числовых данных. Для хранения наборов данных используются структуры данных. Основная структура данных – это массив.

Массив — это структура однотипных данных, занимающих непрерывную область памяти. Массив имеет размер — количество элементов в нем. Каждый элемент массива имеет свой номер (также называемый индексом), обращение к элементу массива осуществляется путем указания его индекса. В языке C++ элементы нумеруются начиная с 0, поэтому последний элемент массива имеет номер на 1 меньше размера массива.

Массив в языке C задается следующим образом:

     тип_элементов идентификатор[размер];

где тип_элементов — произвольный тип данных языка C++, который будут иметь элементы массива, например, int, double и т.д.; идентификатор — имя массива, размер — число элементов в нем.

По стандарту языков C и C++, размер массива должен быть константой, определенной на момент компиляции программы, то есть можно определить массив в виде int A[10 + 5], но нельзя это сделать в виде int A[n]. Однако, компилятор gcc, которым мы пользуемся, допускает объявления второго вида, но при этом нет никаких гарантий, что ваша программа будет откомпилирована каким-либо другим компилятором.

К элементу массива можно обращаться, как идентификатор[индекс]. Например, если было сделано объявление

 
double A[5];

то таким образом создается 5 элементов массива типа double: A[0], A[1], A[2], A[3], A[4].

Пример программы, которая создает массив типа int[], заданного пользователем размера, считывает с клавиатуры его элементы, затем прибавляет к каждому элементу массива число 1, затем выводит результат на экран:

#include <iostream>
using namespace std;
int main()
{
    int n;          // Размер массива
    int i;          // Счетчик в циклах
    cin >> n; // Считываем размер массива
    int A[n];       // Объявление массива
                    // Считываем массив
    for (i = 0; i < n; ++i)
    {
        cin >> A[i];
    }
                    // Прибавляем по 1 к каждому элементу
    for (i = 0; i < n; ++i)
    {
        A[i] += 1;
    }
                     // Выводим массив на экран
    for (i = 0; i < n; ++i)
    {
        cout << A[i] << " ";
    }
    // Переведем курсор на новую строку
    cout << endl;
    return 0;
}

В этом примере при помощи // обозначается начало комментария, весь текст после начала комментария и до конца строки компилятором игнорируется. Второй способ объявления комментария: в начале комментария поставить знаки /*, а в конце */. Это позволяет делать комментарии, занимающие несколько строк. В языке C допустимы только такие комментарии.

Контейнер vector в языке C++

В языке C++ появился более удобный, по сравнению с классическим массивом в языке C, контейнер vector. Он является аналогом обычных массивов, но поддерживает дополнительные возможности, например, его размер можно изменять по ходу программы.

Для использования контейнера vector необходимо в начале программы подключить заголовочный файл vector:

#include <vector>

Вектор A данных типа int объявляется так:

vector <int> A;

В данном случае будет создан вектор нулевого размера. При необходимости создать вектор нужного размера можно задать размер вектора в качестве параметра конструктора:

vector <int> A(n);

В любой момент можно изменить размер вектора при помощи вызова метода resize. Текущий размер вектора можно узнать про помощи метода size.

Обращение к элементам вектора осуществляется так же, как к элементам массива, при помощи квадратных скобок.