LINUX.ORG.RU

История изменений

Исправление 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, но будет куча копирований/перемещений.