История изменений
Исправление KennyMinigun, (текущая версия) :
Например так:
std::string reverseWords(const std::string &input) {
std::list<char> result{};
auto insertIt = result.end();
for (auto i = input.size() ; i > 0; --i) {
const char c = input[i - 1];
if (c != ' ') {
insertIt = result.insert(insertIt, c);
} else {
result.push_back(c);
insertIt = result.end();
}
}
return std::string(result.begin(), result.end());
}
https://wandbox.org/permlink/WtFAymxRti187uAM
Можно конечно сразу использовать std::string вместо std::list, но будет куча копирований/перемещений. (или как в оригинале — std::deque тоже опция)
Исправление KennyMinigun, :
Например так:
std::string reverseWords(const std::string &input) {
std::list<char> result{};
auto insertIt = result.end();
for (auto i = input.size() ; i > 0; --i) {
const char c = input[i - 1];
if (c != ' ') {
insertIt = result.insert(insertIt, c);
} else {
result.push_back(c);
insertIt = result.end();
}
}
return std::string(result.begin(), result.end());
}
https://wandbox.org/permlink/WtFAymxRti187uAM
Можно конечно сразу использовать std::string вместо std::list, но будет куча копирований/перемещений.
Исходная версия KennyMinigun, :
Например так:
std::string reverseWords(const std::string &input) {
std::deque<char> result{};
auto insertIt = result.end();
for (auto i = input.size() ; i > 0; --i) {
const char c = input[i - 1];
if (c != ' ') {
insertIt = result.insert(insertIt, c);
} else {
result.push_back(c);
insertIt = result.end();
}
}
return std::string(result.begin(), result.end());
}
https://wandbox.org/permlink/9hje43AIP6wjcMW6
Можно конечно сразу использовать std::string вместо std::deque, но будет куча копирований/перемещений.