while(a = getchar()!= '\n')
это серия из 1 предупреждений
с приоритетом операторов, вы хотите
while((a = getchar())!= '\n')
в настоящее время вам нравится
while(a = (getchar()!= '\n'))
, пока входной символ не переводится на новую строку, тест верен, поэтому a установлен на 1
Учитывая ваше замечание ниже, вы хотите прочитать строки, а затемостановка, если эта строка пуста или содержит только новую строку или может также быть, если строка не содержит литерал int , иначе для извлечения от int до push it
Например:
#include <iostream>
#include <queue>
#include <string>
#include <sstream>
using namespace std;
int main()
{
priority_queue<int> v1;
priority_queue<int, vector<int>, greater<int> > v2;
cout<<"Enter the elements of the queue. Press enter to stop.\n";
int a;
string s;
while (getline(cin, s) && (istringstream(s) >> a))
{
v1.push(a);
v2.push(a);
}
while(!v1.empty())
{
cout<<v1.top()<<" ";
v1.pop();
}
cout << endl;
}
Компиляция и выполнение:
pi@raspberrypi:/tmp $ g++ -pedantic -Wall -Wextra c.cc
pi@raspberrypi:/tmp $ ./a.out
Enter the elements of the queue. Press enter to stop.
12
32
32 12
pi@raspberrypi:/tmp $