【问题标题】:deque<deque> empty after push_back a dequedeque<deque> 在 push_back 一个双端队列后为空
【发布时间】:2015-06-22 11:21:27
【问题描述】:

我尝试从文件中读取行,每 5 行推送到一个双端队列 dq,然后将 dq 推送到一个双端队列。 dq连续得到了5行,但是push_back dq into ques后,debuger显示ques中插入了一个空队列,下图是debugger的输出。

ques    std::__1::deque<std::__1::deque<std::__1::basic_string<char,            std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::allocator<std::__1::deque<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > >   size=1  
[0] std::__1::deque<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >    size=5  
   [0]          
   [1]          
   [2]          
   [3]          
   [4]          

dq  std::__1::deque<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >    size=5  
   [0]=std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >    "CCCGGGT"   
   [1]  std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >   "CCCCGCA"   
   [2]  std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >   "GGGCCTC"   
   [3]  std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >   "GGGGGGC"   
   [4]  std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >   "TTTGCCT"

知道有什么问题吗?

deque<deque<string>>ques;
deque<string>  dq;
while (std::getline(inputstream, line))
{
    if(linecount<5)
    {
        dq.push_back(line);
        linecount++;
    }
    else if (linecount == 5)
    {
          deque<string>  dq2;
          dq2 = dq;
          ques.push_back(dq2);
        linecount=0;
        dq.clear();
    }
}

【问题讨论】:

  • 你需要 {} 在你的 while 循环中的所有内容
  • 你每读到六行就扔掉一次,并将越来越大的双端队列推入ques。这是故意的吗? (大括号不匹配,因此这不是您的实际代码。)
  • 根据您的意图,您还需要在 else if 块中清除 dq
  • @molbdnilo,对不起,我忘了左{。
  • @XiaofengLiao 下次贴出你的实际代码

标签: c++ deque push-back


【解决方案1】:

终于发现代码符合我的预期。 调试显示问题的内容为空。 但实际上,其中有元素。我可以数出它的内容。 不知道为什么调试器不会在双端队列中显示双端队列的内容。

【讨论】:

    猜你喜欢
    • 2014-04-23
    • 1970-01-01
    • 2015-01-15
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 2017-05-12
    • 1970-01-01
    • 2019-05-05
    相关资源
    最近更新 更多