я хочу создать 16 vecotr
vector<int> queue[16]
в то же время, я хочу создать 3 очереди в 16 векторе
поэтому я думаю, что если я напишу этот код, как это
vector<int> queue[16][3]
это точное описание?
Я пытался. но хотите проверить, что код в основном правильный?
пожалуйста помогите!
Чтобы создать std::vector<int>
который инициализирован размером 16 элементов, вы хотите сказать:
std::vector<int> queue(16);
Аргумент 16
для queue
говорит инициализировать вектор, чтобы иметь 16 элементов. Таким образом, это создаст вектор и инициализирует его для хранения 16 элементов. Вы всегда можете изменить размер std::vector
, поэтому не всегда необходимо его размер.
Элементы инициализируются значением по умолчанию, основанным на типе. В этом случае они будут инициализированы до 0. Если вы хотите инициализировать какое-то другое значение, укажите его как второй аргумент:
std::vector<int> queue(16, 42); // 16 elements with the value 42.
Чтобы создать двухмерный вектор, вам нужно объявить вектор векторов ints. Это немного сложнее. Это объявляет его, не устанавливая его размер:
std::vector< std::vector< int > > queue;
Чтобы инициализировать это до 16 x 3 двухмерного вектора векторов, следующий синтаксис будет делать то, что вы хотите:
std::vector< std::vector< int > > queue( 16, std::vector<int>(3) );
Там немного происходит в инициализации:
queue
- это размер для инициализации внешнего вектора. Это 16.std::vector<int>
который был инициализирован для хранения трех элементов. Этот анонимный vector<int>
будет скопирован на каждый из 16 элементов внешнего вектора.Результатом является 2-D вектор-of-vector-of-int, первый (внешний) размер которого равен 16, а второй (внутренний) размер равен 3.
Теперь все, что сказал, вектор 16x3 вектора-of-int вряд ли будет таким эффективным. Вы можете рассмотреть возможность создания структуры или использования std::tuple
для объединения трех значений вместе и создания вектора этого, поэтому вы остаетесь в виде одномерного вектора.
И имя вашей queue
переменных предполагает, что вы создаете очередь значений. Фактически вы можете использовать std::queue
если это соответствует вашим целям.
push_back
на внешнее измерение? В этом случае, если внутреннее измерение всегда равно 3, вам следует рассмотреть возможность использования struct
, class
или std::tuple
которой всегда есть 3 элемента, и сделать это 1-D структурой, охватывающей этот комплект-3.
vector<int> queue[16][3]
- это двумерный массив из 48 векторов. Я не понимаю, чего ты хочешь. Если вы хотите очередь, используйтеstd::queue<>
.