There is of course a much faster sorting for char, namely counting sort, also known as radix sort. This is only O(n) instead of O(n log n):
#include <array>
#include <string>
#include <climits>
#include <vector>
std::string AlphabetSoup(const std::string& text) {
std::array<std::size_t, UCHAR_MAX> count{};
for (unsigned char letter : text) {
++count[letter];
}
std::vector<char> v;
v.reserve(text.size());
char letter { 0 };
for (int cnt : count) {
v.insert(v.end(), cnt, letter++);
}
return {v.begin(), v.end()};
}