I have a vector with 5 words in it used multiple times, what i want is to achieve this order of words: "a, zawodowe, wyzsze, podstawowe, bez wyksztalcenia" So i wrote this code, and i wonder if its the optimal way of using sort, or maybe one of the if conditions can be skipped
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
std::vector<std::string> v = {"wyzsze", "podstawowe", "zawodowe","podstawowe",
"zawodowe", "bez wyksztalcenia", "zawodowe", "zawodowe", "wyzsze",
"zawodowe", "zawodowe", "wyzsze", "podstawowe", "bez wyksztalcenia",
"wyzsze", "podstawowe", "zawodowe","podstawowe",
"zawodowe", "bez wyksztalcenia", "zawodowe", "zawodowe", "wyzsze",
"zawodowe", "zawodowe", "wyzsze", "podstawowe", "bez wyksztalcenia",
"wyzsze", "podstawowe", "zawodowe","podstawowe",
"zawodowe", "bez wyksztalcenia", "zawodowe", "zawodowe", "wyzsze",
"zawodowe", "zawodowe", "wyzsze", "podstawowe", "bez wyksztalcenia",
"wyzsze", "podstawowe", "zawodowe","podstawowe",
"zawodowe", "bez wyksztalcenia", "zawodowe", "zawodowe", "wyzsze",
"zawodowe", "zawodowe", "wyzsze", "podstawowe", "bez wyksztalcenia", "a" };
//return a>b daje: zawodowe, wyzsze, podstawowe, bez wyksztalcenia, a
std::sort(v.begin(), v.end(), [](std::string a, std::string b){
if(a == "zawodowe" && b == "a") return false;
if(a == "a" && b == "zawodowe") return true;
if(a == "wyzsze" && b == "a") return false;
if(a == "podstawowe" && b == "a") return false;
if(a == "bez wyksztalcenia" && b == "a") return false;
return a>b;
});
for (std::string i: v) {
std::cout << i << std::endl;
}
}