我在Mac上使用g ++来编写作业。任何帮助表示赞赏(这甚至不是作业的家庭作业部分,只是他要求我们完成的问题的设置)。在我的main.cpp中我有
var strToID = {
"STRING1": () => {
document.getElementById("TOPIC1").checked = true;
},
"STRING2": () => {
document.getElementById("TOPIC2").checked = true;
}
}
if(window.location.href.indexOf("STRING1") > -1 && strToID["STRING1"]) {
strToID["STRING1"]();
}
我正在编译并链接几个文件:g ++ main.cpp queue.cpp -o Queue 但是我的输出是:
Queue test_list;
test_list.add(4);
test_list.add(1);
test_list.add(3);
test_list.add(2);
test_list.remove();
cout << "boop!" << endl;
我真的不明白为什么代码编译失序 - 不应该把boop放在最后?我也不明白我的教科书中的代码(我在哪里获得添加和删除功能)是如何工作的。我没有看到删除函数是如何重复的,因为它没有循环。 这里他们是供参考:
4
End of test1
boop!
1
End of test1
3
End of test1
2
End of test1
答案 0 :(得分:1)
编译没问题。
我的猜测是Queue的析构函数为每个剩余项目调用remove方法。
答案 1 :(得分:1)
它是一个队列,正如它的类名和行为所说的那样。什么是队列?将队列视为枪支加载,第一颗子弹进入是第一颗将要熄灭的子弹(FIFO)。
此处add
函数正在执行enqueue,remove
已出列(加载和触发)。您依次添加4-1-3-2
并拨打remove
一次。 4
,因为第一项将被删除,现在您的队列就像1-3-2
。下一次删除调用会将1
弹出队列,依此类推。
您与我们分享的输出是正常的,直到boop
其他remove
来电不在您共享的代码中。可能发生在其他地方(可能是类Queue
的析构函数)。