先 reserve 就不用扩容
补全:在 push_back 之前先 reserve(100),再依次放进 1..100,输出这一路扩了几次容。 (本题用 g++ -std=c++17 -O0 编译。)
手写翻倍扩容的数组
补全 grow:用 new int[cap * 2] 开新缓冲区、搬数据、delete[] 旧的。从容量 1 开始放 5 个数,输出「容量/个数」,格式如 8/5。 (本题用 g++ -std=c++17 -O0 编译。)
用 sizeof 算出元素个数
补全:原生数组没有 size(),在定义它的地方可以用 sizeof(a) / sizeof(a[0]) 算出个数。求出数组所有元素之和。 (本题用 g++ -std=c++17 -O0 编译。)
原地是什么意思
说一个操作是「原地」做的,意思是【0】。
原地反转要几个指针
第 1 步:i 在头,j 在尾 第 2 步:交换这一对 第 3 步:i、j 往中间走一步 第 4 步:交换这一对 第 5 步:i、j 往中间走一步 第 6 步:碰面了:原地反转完成 3 7 5 9 4 i j 把一排人原地前后调个个儿,最省
原地去重的前提
用双指针在数组上原地去重,前提是这排数据【0】。
反转之后第一个是谁
运行下面这段程序: #include <iostream> #include <string> #include <vector> using namespace std; #include <u
去重之后还剩几个
运行下面这段程序: #include <iostream> #include <string> #include <vector> using namespace std; int main() {
原地反转这排人
补全代码:用两个指针把这排人原地前后调个个儿。做完之后只输出第一个人。 (本题用 g++ -std=c++17 -O0 编译。)
原地去掉重复的
下面这排数已经排好序了。补全代码,原地把重复的挤掉。做完之后只输出还剩几个不重复的。 (本题用 g++ -std=c++17 -O0 编译。)