Отсортировать вектор определенным образом

Надо отсортировать вектор ans (тип char) в алфавитном порядке, при этом сначала должны идти буквы нижнего регистра, затем - верхнего. Честно пыталась найти решение в гугле, но почти все-с указателями. Можно без них решение, пожалуйста

#include <iostream> 
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
// читайте сразу конец кода
int main() {
    int n, m;
    cin >> n >> m;
    vector <vector <char>> pole(n, vector <char>(m)), pole2(n, vector <char>(m));
    string x, nada;
    vector <char> ans;
    for (int i = 0; i < n; i++) {
        cin >> x;
        for (int j = 0; j < m; j++) {
            pole[i][j] = x[j];
        }
        x.clear();
    }
    for (int i = 0; i < n; i++) {
        cin >> x;
        for (int j = 0; j < m; j++) {
            pole2[i][j] = x[j];
        }
        x.clear();
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            if (pole[i][j] != pole2[i][j]) { ans.push_back(pole[i][j]); }
        }
    }
    for (int i = 0; i < ans.size(); i++) {
        if (ans[i] == '.') { ans.erase(ans.begin() + i); i = 0; }
    }
    cout << ans.size() << endl; 
    sort(ans.begin(), ans.end());
    for (int i = 0; i < ans.size(); i++) {
        cout << ans[i];
    }
}

Ответы (1 шт):

Автор решения: AR Hovsepyan

А без вашего кода?...

//функция сравнения
bool cmp(const char a, const char b)
{
    if (islower(a) && std::isupper(b))
        return true;
    else if (islower(b) && std::isupper(a))
        return false;
    return a < b;
}
//макрос для удобства
#define ALL(v) v.begin(),v.end()
//вводим, сортируем,удаляем повторяющийся символы и  выводим
int main() 
{  
    using Iter = std::istream_iterator<char>;
    std::vector<char>ans{ Iter(std::cin), Iter()};
    std::sort(ALL(ans), cmp);
    ans.erase( std::unique(ALL(ans)));
    std::copy(ALL(ans), std::ostream_iterator<char>(std::cout, " "));
    //Ну и можно освобождать лишнюю память(уменьшить 
   //занимаемый объем до нужного), если вектор еще где то нужен
   ans.shrink_to_fit();
   //...
    return 0;
}
→ Ссылка