装满了再放会发生什么
vector 的 size 已经等于 capacity,这时再 push_back,会发生【0】。
reserve 做了什么
第 1 步:往 vector 里放 8 个数 第 2 步:容量 1:满了就搬家 第 3 步:容量 2:满了就搬家 第 4 步:容量 4:满了就搬家 第 5 步:容量 8:搬了 3 次 第 6 步:先 reserve(8):一次开够 v.re
边遍历边删该怎么写
用迭代器遍历容器、中途要 erase 当前元素,正确的做法是【0】。
reserve 以后有几个元素
运行下面这段程序: #include <algorithm> #include <iostream> #include <map> #include <string> #include <
开够了还会搬家吗
运行下面这段程序: #include <algorithm> #include <iostream> #include <map> #include <string> #include <
不 reserve 搬了几次家
补全:往空 vector 里依次 push_back 1000 个数,每当 capacity() 变了就计一次数,输出一共搬了几次家。(扩容倍数由标准库决定;本平台 g++ 从 1 开始、每次翻倍。) (本题用 g++ -std=c++17
边遍历边删掉偶数
补全:遍历 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 编译。)