【发布时间】: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 下次贴出你的实际代码