Deque使用front()打印后元素而不是前元素
deque prints back element instead of the front using front()
我使用dque将我从文件中读取的一些元素推入到deque的后面但是当我从前面打印它们时我只得到最后一个元素
fgets(line,100,file);
qu.push_back(line);
fgets(line,100,file);
qu.push_back(line);
fgets(line,100,file);
qu.push_back(line);
fgets(line,100,file);
qu.push_back(line);
while(!qu.empty())
{
puts(qu.front());
qu.pop_front();
}
样本输入
a
b
c
d
输出d
d
d
d
Thank you
您没有提供line
和qu
的声明,但我可以猜测它们是
char line[100];
std::dequeue<char*> qu;
这意味着qu
存储指向外部(qu
)缓冲区的指针,其中包含字符。在你的程序中,你只有一个单独的缓冲区(line
),它的地址被反复推入qu
,但是它的内容被每次fgets
调用覆盖。
当你学习c++时,尽量远离指针。因此,对于字符串,不要使用char*
,而是使用std::string
:
std::string line;
std::deque<std::string> qu;
getline(std::cin, line);
qu.push_back(line);
getline(std::cin, line);
qu.push_back(line);
getline(std::cin, line);
qu.push_back(line);
getline(std::cin, line);
qu.push_back(line);
while(!qu.empty())
{
std::cout << qu.front() << std::endl;
qu.pop_front();
}
相关文章:
- 从控制台中删除最后打印的元素
- 数组元素打印的递归方法
- 打印所有链表的元素 (C++)
- 更新的矢量元素不打印
- 打印矢量数组中的所有元素
- 为什么我在尝试在单向链表中打印元素时会出现这个永无止境的循环
- 如何在c ++中打印给定桶号的所有元素unordered_set?
- 为什么平均打印数组元素比打印单个对象慢C++?
- 为什么这个程序没有打印返回的迭代器的正确第二个元素?
- 使用 <list> (错误 C2760) 打印队列的元素
- 使用哈希图打印第一个重复元素;
- 打印二叉树中的常见元素
- 打印无序映射的第二个元素,即集合
- 打印所有儿童树元素的最佳算法?
- 类中的 C++ 全局映射,不要打印 map 元素
- 为什么数组不打印第一个元素?
- C++ Expat 仅打印元素的第一个字母和标签中的数据
- 打印出对象向量中的每个元素C++
- 有没有办法搜索向量的元素,<String>然后检查它是否包含特定的字符,如果它确实打印了它
- 按升序打印矢量的所有元素直到它为空而没有重复项的最有效方法是什么?