Моя цель - создать массив кучи (с объемом 10 целых чисел для каждого вектора). Я могу создать свой массив достаточно легко:Инициализация массивов векторов в куче, C++
vector<int>* test = new vector<int>[NUM_VERTS];
Однако это создает массив пустых векторов. Я знаю, что в каждом векторе будет храниться не менее 10 целых чисел, поэтому я хочу создать векторы размером 10 для начала, чтобы избежать повторного их размера несколько раз (я читаю в большом файле и поэтому эффективность важна). Как я могу изменить сказанное выше, чтобы оно делало то, что я хочу?
Как примечание, я использую VS 2013 и борюсь с его отладчиком. Когда я запускаю отладчик и просматриваю содержимое test
выше, он показывает мне адрес памяти области, на которую указывает, но не содержимое, хранящееся по адресу. Кто-нибудь знает, как я могу просматривать содержимое вместо адреса?
Благодаря
PS Я создаю массив векторов в куче, вместо стека, так как массив очень большой (чуть менее миллиона записей). Когда я попытался создать его в стеке, я получил ошибку переполнения стека.
Динамическое выделение 'vector' очень необычно, и выполнение этого для массива из них практически неслыханно. Используйте 'vector> test;' или, может быть, 'array , NUM_VERTS> test;' если 'NUM_VERTS' известно во время компиляции. –
Praetorian
@Praetorian Причина, по которой я использую массив векторов, состоит в том, что я думал, что это будет быстрее, чем использование вектора векторов. Как я уже упоминал, файл, который я читаю, действительно большой, и поэтому я хочу быть максимально эффективным. – Adam
Когда вы используете 'new []' operator для выделения памяти, единственным конструктором, который может использоваться для инициализации объектов, является конструктор по умолчанию. –