类的成员函数没实现
场景:一个小统计工程分成 counter.h / counter.cpp / main.cpp 三个文件。每个文件都能单独编译,一链接就报 undefined reference。 任务:在 ~/work/counter 里把 counte
头文件里的定义重复了
场景:三个 .cpp 都包含同一个 util.h,里面直接写了一个函数和一个全局计数器。单独编译都没事,链接时却报 multiple definition。 任务:改 ~/work/odr 里的代码,让 g++ -std=c++17 -o
十几万个词用什么
统计十几万个单词各出现几次,只按单词查计数、不关心顺序,最快的容器是【0】。
比较器里的等号
std::sort 的比较器写成 return a.score >= b.score;,问题是【0】。
带并列规则的比较器
补全排序的比较器:分数高的在前,同分按名字字典序从小到大。输出排好后的名字,用逗号隔开。 (本题用 g++ -std=c++17 -O0 编译。)
词频统计太慢
场景:一个词频统计程序在几百个词上表现正常。线上一次要统计十几万个词,它跑了十秒都没出结果。 任务:改 ~/work/freq/freq.cpp 的统计方式,让约 12 万个单词在 2 秒内出结果,输出格式和排序规则一字不变。用 g++ -
比较器写错了
场景:一个排名程序的结果里,同分的人顺序每次都不一样,数据多的时候偶尔还会崩。排序那一行看上去平平无奇。 任务:修好 ~/work/rank/rank.cpp 的比较器:分数从高到低,同分按名字字典序从小到大。编译成 ~/work/rank
抛异常时谁会被释放
中途抛出异常,作用域照样结束 抛出 作用域一结束,里面的对象自动析构 函数执行到一半抛出异常时,由【0】管理的对象一定会被释放。
搬家时用移动
想让 vector 扩容搬家时用移动而不是拷贝,元素类型的移动构造函数应该【0】。
把拷贝降到零
Big 每被拷贝一次计数加一。改两个函数的参数,让它们不再拷贝(结果不变)。输出 结果/拷贝次数。 (本题用 g++ -std=c++17 -O0 编译。)