Как отсортировать вектор строк в указанном порядке c:
по модулю 3 из длины слова
лексикографический сравнение по строкам (первые цифры, нижняя, верхняя)
Мой код:
#include <iostream>
#include <algorithm>
#include <vector>
#include <tuple>
#include <string>
int main() {
std::vector<std::string> words = {
"cat1",
"cata",
"cataaaa",
"cataAaa",
"catD",
"dogdog",
"dog"
};
std::sort(words.begin(), words.end(), [&](auto const& lhs, auto const& rhs) {
return std::make_tuple(lhs.length() % 3, lhs)
< std::make_tuple(rhs.length() % 3, rhs);
});
for (auto& word : words) {
std::cout << word << "\n";
}
}
Вывод:
dog
dogdog
cat1
catD
cata
cataAaa
cataaaa
Что я хочу :
dog
dogdog
cat1
cata
catD
cataaaa
cataAaa