Удалите символ из вставленной строковой записи в очереди - PullRequest
0 голосов
/ 23 марта 2020

У меня есть очередь, в которой я получаю строку sh на ней в качестве моей первой записи, а затем я хочу удалить из очереди каждый символ этой строки индивидуально, я попробовал два подхода:

   string s ="()()h)"
    queue<string> q;
    q.push(s);        
    while(!q.empty())
    {
        string temp = q.front();
        q.pop();
}

Это приводит к выталкиванию строки в целом, я также пытался преобразовать строку в массив char, например:

    string input ="()()h)"
    char s[input.size() + 1];
    strcpy(s,input.c_str());

Помощь будет принята, спасибо.

1 Ответ

1 голос
/ 23 марта 2020

Кажется, вы хотите создать очередь персонажей. В этом случае определение очереди может выглядеть так, как показано в демонстрационной программе ниже.

#include <iostream>
#include <string>
#include <queue>

int main() 
{
    std::string s = "()()h)";
    std::queue<char> q( std::queue<char>::container_type( s.begin(), s.end() ) );

    while ( not q.empty() )
    {
        char c = q.front();
        q.pop();
        std::cout << c;
    }

    std::cout << '\n';

    return 0;
}

Вывод программы:

()()h)

To pu sh строка в уже Существующую очередь вы можете использовать, например, стандартный алгоритм std::for_each (или диапазон на основе l oop).

#include <iostream>
#include <string>
#include <queue>
#include <iterator>
#include <algorithm>

int main() 
{
    std::string s = "()()h)";
    std::queue<char> q;

    std::for_each( std::begin( s ), std::end( s ), 
                   [&q]( const auto &item )
                   {
                        q.emplace( item );
                   } );

    while ( not q.empty() )
    {
        char c = q.front();
        q.pop();
        std::cout << c;
    }

    std::cout << '\n';

    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...