[閒聊] 如何禁用特定的STL容器或函式

作者: kipi91718 (正港台灣人)   2016-12-08 11:46:04
大家好,
我從以前就有一直這個問題,
在大學裡面像是資料結構、演算法這種課程,
一定會希望學生自己去實作一些基礎的功能,
而這些功能又常是STL等等函式庫裡有提供的,
如果作業的批改當中沒有辦法一一的去看學生的code,
要如何避免學生偷懶去使用某些特定的container或function?
最簡單最直觀的方法,就是針對每一份code去移除code裡面這些被include的header,
甚至去把那些lib直接從原本的路徑移開或者重新命名。
可是有什麼比較有效率的做法嗎?
例如在makefile當中去禁止,
或者用寫一些可以讓編譯器預處理掉這些lib的code。
不知道大家有沒有什麼經驗?
作者: shadow0326 (非議)   2016-12-08 12:03:00
#ifdef _GLIBCXX_VECTOR 就 #error 之類的?
作者: Sylveon (仙子精靈)   2016-12-08 12:49:00
114我不是很想告訴你,可以加-D_GLIBCXX_VECTOR 之類的把一些東西弄掉
作者: Caesar08 (Caesar)   2016-12-08 12:55:00
如果學生直接找source code貼上呢?
作者: Sylveon (仙子精靈)   2016-12-08 13:15:00
有人這樣幹過啊,可是那位本來就很強,要不要認真實作是學生的事,一直搞下去也只會變成補洞大會而已,也有可能把其他正常的Code搞爛
作者: james732 (好人超)   2016-12-08 13:17:00
我之前當助教,程式作業都會一個一個看耶QQ
作者: x000032001 (版廢了該走了)   2016-12-08 13:19:00
限定只能寫C
作者: stupid0319 (徵女友)   2016-12-08 13:23:00
會有天才學生寫出神CODE來搞助教的嗎
作者: CoNsTaR ((const *))   2016-12-08 13:34:00
我大一的時候讀了幾本深入剖析 stl 之類的書 資結作業我都比照 SGI stl 的寫 還記得不過是一個 linked list 我寫了兩天 總共 1100 多行 XD
作者: Sylveon (仙子精靈)   2016-12-08 13:35:00
有的~
作者: CoNsTaR ((const *))   2016-12-08 13:36:00
當時其實還滿擔心助教說我是複製貼上 stl 的,不過還好沒有
作者: pttworld (批踢踢世界)   2016-12-08 14:03:00
撰寫簡易讀取資料夾底下程式檔案逐行比對之程式。
作者: chchwy (mat)   2016-12-08 17:03:00
這種簡單的批次文字掃描用grep吧不然用notepad++也可以對整個目錄搜尋 不需要自己看
作者: kipi91718 (正港台灣人)   2016-12-08 18:24:00
感謝大家的意見 貼上整個source code的這個 能成功也只能說本來就很厲害XD
作者: Ommm5566 (56天團)   2016-12-11 13:26:00
有辦法 但是出作業的人負擔會比較大你寫好一個template框架 然後要求學生去Inheritance這個框架去擴充完成作業甚至連main()裡面都寫好,要求這邊不能動不過這樣已經有點TDD味道了
作者: wtchen (沒有存在感的人)   2016-12-11 17:40:00
Coursera有些C++的課就是這樣弄的。

Links booklink

Contact Us: admin [ a t ] ucptt.com