边遍历边删掉偶数

补全:遍历 vector,把偶数都 erase 掉,剩下的用 - 连起来输出。要用 erase 的返回值接着走。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

用 remove_if 一次删完

补全:用 erase + remove_if 这个经典组合,把所有负数一次删掉,输出还剩几个。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

reserve 以后地址不变

补全:先 reserve 够 100 个,记下第一个元素的地址,再放 99 个进去,看首地址变没变。没变输出 地址没变,否则输出 地址变了。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

边遍历 map 边删

补全:遍历 map<string, int>,把次数小于 2 的词都删掉,剩下的词用 - 连起来输出。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

优化的第一步(C++)

着手优化之前,第一步应该是【0】。

开始练习 →

凭感觉优化的典型后果

第 1 步:把总耗时切成 10 份 第 2 步:读数据只占 1 份 第 3 步:判重占了 9 份 第 4 步:先优化占大头的那段 不测量、凭感觉优化,典型后果是【0】。

开始练习 →

优化前要比多少次

200 条数据,用数组判重。运行下面这段程序: #include <algorithm> #include <iostream> #include <map> #include <string>

开始练习 →

优化后还要比多少次

同样 200 条,改用集合。运行下面这段程序: #include <algorithm> #include <iostream> #include <map> #include <string>

开始练习 →

把平方级的判重改成线性

下面的 slow_dedup 每次都在 vector 里从头找(O(n²))。补全 fast_dedup:改成集合判重、数组保序,结果必须一样。输出快版去重后还剩几个。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

把重复计算提到循环外

下面的代码在循环里反复调用同一个开销大的函数,而它的结果每次都一样。把它提到循环外面去,然后输出这个函数被调用了几次。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →