2014-03-22 2 views
0

У меня есть массив следующим образом: uint64_t MyArray[500]C++ Список массивов

Я хочу, чтобы иметь возможность PUSH и POP этот массив на стек/список какой-то.
В основном я буду работать с этим массивом в цикле и должен будет PUSH массив в стек/список какого-то рода, чтобы я мог позже выполнить POP в цикле ... Я буду PUSHing и POPing массив на stack/list несколько раз, поэтому стек будет расти и сокращаться по пути.

Как работать со стеком/списком массивов на C++, как это? Я не хочу просто объявлять двухмерный массив, потому что я не могу предсказать размер ... было бы намного более чистым и надежным, если бы я мог использовать какой-то «список массивов», который я могу легко удалить PUSH и POP.

ответ

3

C++ реализовал обертку stack, которая может быть полезна. Рекомендуется, чтобы вы работали с std::vector однако:

#include <stack and vector> 

vector<uint64_t> v(500); 
stack<vector<uint64_t>> sv; 
sv.push(v); 
sv.pop(v); 
+0

Если он хочет сохранить исходный тип массива С, он может просто использовать указатели и использовать 'stack ' вместо – ASKASK

+0

Если я использую этот подход, когда я делаю sv.push (v), он будет нажимать КОПИЮ вектора на стек? Я хочу сделать «моментальный снимок» из «массива»/вектора, а затем продолжить работу с ним и снова вставить его в стек, а где-то посередине будет вытягивать стек (много раз). Я не хочу нажимать указатель на исходный экземпляр (v в вашем примере), потому что тогда, когда я продолжаю работать с v, он изменит ВСЕ записи в стеке, поскольку все они будут указателем на один и тот же экземпляр. –

+0

Да, вы будете нажимать копию – yizzlez

1

Самый простой способ заключается в вдается создать stack<uint64_t*> значения.

stack<uint64_t*> vector; 
stack.push(MyArray); 
stack.pop(); 

Обратите внимание, что это не будет ничего, чтобы управлять памятью делать. Он будет просто рассматривать его как значение указателя.

+0

Мне нравится простота. Если бы я создал новый экземпляр «MyArray», который является копией самого себя, каждый раз, прежде чем нажимать эту копию на вектор, будет ли это делать «моментальный снимок» данных/управлять памятью для меня? –

+0

@TappaTappa Предполагая, что вы скопировали отдельные значения, да, это будет – JaredPar

+0

@JaredPar ... Как я могу управлять созданием копии массива ... он должен быть «глобальным» в области видимости ... и я выиграл ' я знаю, сколько копий мне нужно сделать по пути! –

 Смежные вопросы

  • Нет связанных вопросов^_^