请大神帮忙看看,为什么我的sort函数没有实现排序的功能。多谢吖!

问题如下:
Read the datasets and write them into cout in the following order: first by dataset (first a, then b) and then by value.
Example: input: a 3 b 2 b 1 a 1 a 4 b 2
output: 1 3 4 1 2 2

我的代码:
#include
#include
#include
using namespace std;

vector<int> a;  //将vector a, b 定义为全局变量,因为之后要用
vector<int> b;  

void assignGroup(char groupName, int x){
vector a1; //定义两个局部变量,接收用户输入的数x
vector b1;
switch(groupName){
case 'a': //若输入a x, 则x放入vector a1
a1.push_back(x);
break;
case 'b': //若输入b x, 则x放入vector b1
b1.push_back(x);
break;
default:
break;
}

a=a1;  //将a1,b1 赋给全局变量a,b
b=b1;

}
void displaya(){

sort(a.begin(),a.end()); //vector a 中的元素以从小到大的顺序排列
for (auto e : a){ //输出vector a 中的元素
cout<<e<<" ";
}
}
void displayb(){
sort(b.begin(),b.end()); //vector b 中的元素以从小到大的顺序排列
for (auto e : b){ //输出vector b 中的元素
cout<<e<<" ";
}
}

int main(){
char groupName;
int x;
while (true){
cin>>groupName; //输入例如 a 3 a 2 b 1 a 4....
cin>>x;

    if (cin.fail()){
        break;
    }
    assignGroup(groupName,x);//先将数字分成ab两组
    displaya();              //输出排列好的a b
    displayb();
}
return 0;

}
输入是:a 3 b 2 b 1 a 1 a 4 b 2
正确输出:1 3 4 1 2 2
我的输出:3 2 1 1 4 2

看来既没有实现分组,也没有实现排序。。

cin>>groupName;
修改为
fflush(stdin);
scanf("%c", &groupName);
看看是不是输入的问题

注意 最后 要输出两个0
if (x == 0) {
break;
}
这个作为终端结果

    正确代码

vector a; //将vector a, b 定义为全局变量,因为之后要用
vector b;
void assignGroup(char groupName, int x) {

switch (groupName) {
case 'a': //若输入a x, 则x放入vector a1
    a.push_back(x);
    break;
case 'b': //若输入b x, 则x放入vector b1
    b.push_back(x);
    break;
default:
    break;
}

}
void displaya() {
cout <<"a.size"<< a.size() << endl;
sort(a.begin(), a.end()); //vector a 中的元素以从小到大的顺序排列
cout << "a-->";
for (auto e : a) { //输出vector a 中的元素
cout << e << " ";
}
cout << endl;
}
void displayb() {
cout << "a.size" << a.size() << endl;
sort(b.begin(), b.end()); //vector b 中的元素以从小到大的顺序排列
cout << "b-->";
for (auto e : b) { //输出vector b 中的元素
cout << e << " ";
}
cout << endl;
}

int main() {
char groupName;
int x;
while (true) {
cin >> groupName; //输入例如 a 3 a 2 b 1 a 4....
cin >> x;

if (x == 0) {
break;
}
assignGroup(groupName, x);//先将数字分成ab两组

}
displaya();              //输出排列好的a b
displayb();
cout << "over" << endl;
cin >> x;
return 0;

}

vector a1; //定义两个局部变量,接收用户输入的数x
vector b1;
这个编译不过要改为vector
vector int>
void assignGroup(char groupName, int x){
vector a1; //定义两个局部变量,接收用户输入的数x
vector b1;

这个a1 ,b1是局部变量
assignGroup 函数运行结束后,a1,和 b1就没了

a=a1; //将a1,b1 赋给全局变量a,b
b=b1;

每次会换一个vector所以就是每次displaya()运行时,vector里面只有一个数字
displaya(); //输出排列好的a b
displayb();

    这两个函数要放到循环外,一次排序就好