先 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 编译。)

开始练习 →