Векторные контейнеры реализованы как динамические массивы; Как и обычные массивы, векторные контейнеры имеют свои элементы, хранящиеся в смежных местах хранения, что означает, что к их элементам можно получить доступ не только с помощью итераторов, но и с использованием смещений на регулярных указателях на элементы.
Ну, SIZE
, вероятно, не макрос, потому что здесь вы инициализируете его с 10 и имеете его как переменную. Если бы это был макрос, ваше выражение int a[SIZE]
сработало бы, но вам все равно не понадобились бы строки 2-4.
Если SIZE
является, как здесь, нормальной переменной (которая включает в себя динамическое создание A
с параметром размера, , хотя входные данные могут быть из макроса), вы должны использовать вектор.
#include <vector>
class A {
const int SIZE;
A() : SIZE(10) {}
void aaa() { std::vector<int> a(SIZE); }
};
Использование a
теперь то же самое.