QStack наследуется от QVector, так что вы можете (но, скорее всего, не должен ) выполнять итерацию так же, как вы делаете с QVector.
QStack <int> stack;
stack.push(1);
stack.push(2);
stack.push(3);
for (int i : stack)
{
std::cout << i << std::endl;
}
Однако, есть очень хороший шанс, что вы должны НЕ использовать стек, если вам нужно выполнить итерацию.Просто используйте фактический QVector.
Смысл использования стека состоит в том, чтобы «навязывать» порядок LIFO (Last In First Out) для предметов.Если вы перебираете их в каком-то определенном порядке, вы нарушаете порядок, предписанный стеком, и поэтому (очень вероятно) НЕ должны использовать стек в первую очередь.
PS Это было сосредоточено на QStack, ноТо же самое относится и к QQueue.Различия заключаются в том, что Queue обеспечивает упорядочение FIFO (первым пришел - первым обслужен), а в QT QQueue наследуется от QList, поэтому замените его на QList, а не QVector.