как из stack удалить сразу два элемента?

234
14 мая 2018, 14:20
#include <iostream>
#include <stack>
using namespace std;
int main() {
stack <int> q;
int a, n, b, j = 0, c;
cin >> n;
for(int i = 0; i < n; i++){
cin >> a;
q.push(a);
}
пример: 5,4,3,2,1;
я хочу удалить сразу 5 и 4
Answer 1

В данной реализации имеется только функция pop()

поэтому в вашем случае

q.pop();
q.pop();
Answer 2

Если вы хотите удалить с любого места стека, а не с хвоста, то придется иметь еще один стек помощник:

stack<int> q, h;
// положим  в стек  q  целые от 10 до 0 
for (int i = 10; i > 0; --i)
    q.push(i);
//допустим я хочу удалить 4 и 5 
while (q.top() != 4) {
    h.push(q.top());
    q.pop();
}
//теперь 4 и 5 в хвосте стека. Удалим их
q.pop();
q.pop();
// скопирум из h  в  q
while (!h.empty()) {
   q.push(h.top());
   h.pop();
}
// теперь в q есть 10, 9, 8, 7, 6, 3, 2, 1
READ ALSO
Как узнать размер двумерного указателя?

Как узнать размер двумерного указателя?

Не могу найти как узнать размер двумерного указателяЯ передаю указатель arrKeyRate

212
C++ WinAPI обработка исключений [требует правки]

C++ WinAPI обработка исключений [требует правки]

Напишите код для консольного приложения, обрабатывающего исключение при переполнении разрядной сетки

204
Решение ABA - проблемы

Решение ABA - проблемы

Необходимо решить ABA - проблему, используя младшие биты в качестве счетчика

237