我正在努力解决这段代码:
std::queue<char> output_queue;
std::string output_string
// put stuff into output_queue
while (!output_queue.empty())
{
output_string.insert(0,(output_queue.front()));
output_queue.pop();
}
我不能这样做,因为std::queue<char>::front()
将返回char&
而我无法将其放入std::string
。
答案 0 :(得分:5)
您错过了让insert
插入字符的参数。您需要指定该角色的数量:
output_string.insert(0, 1, output_queue.front());
如果您想让自己更轻松,也可以使用std::deque
代替std::queue
并将其替换为:
std::deque<char> output_queue;
//fill output_queue in same way, but use push/pop_front/back instead of push/pop
std::string output_string(output_queue.begin(), output_queue.end());
output_queue.clear();
这几乎与现在一样,因为您的queue
实际上默认使用了std::deque
。但是,deque
支持迭代器,这使得可以实现依赖底层存储的丑陋代码。
答案 1 :(得分:1)
您可以使用
output_string += (output_queue.front());
然后(稍后)reverse