unique_ptr 链头一释放会怎样
第 1 步:next 都是 unique_ptr 第 2 步:head.reset():第 1 节释放 第 3 步:它的 next 跟着释放第 2 节 第 4 步:它的 next 跟着释放第 3 节 第 5 步:它的 next 跟着释放第
std::list 是什么结构
标准库里的 std::list,本质上是一条【0】。
std::list 中间插入要先拿什么
要在 std::list 中间某处插入,先要拿到【0】。
reset 以后释放了几个
运行下面这段程序: #include <iostream> #include <memory> #include <string> using namespace std; int freed = 0;
用 std::list 在最前面插
补全:用 std::list 的 push_front 在最前面插入「北辰」,然后输出「长度/第一个」,格式如 5/甲。 (本题用 g++ -std=c++17 -O0 编译。)
用 std::list 插到某人后面
补全:找到「阿岚」,把「北辰」插到她后面,再按顺序输出所有名字,用 - 连起来。 (本题用 g++ -std=c++17 -O0 编译。)
用 std::list 删掉一个人
补全:从 std::list 里删掉「小满」,然后输出「长度/第二个」,格式如 3/乙。 (本题用 g++ -std=c++17 -O0 编译。)
两头都能插的 std::list
运行下面这段程序: #include <iostream> #include <list> #include <string> using namespace std; int main() {
unique_ptr 链表的头插
补全 push_front:next 是 unique_ptr 的链表,头插要用 std::move 转交所有权。依次头插四个人后再插「北辰」,输出「第一个/总数」,格式如 甲/5。 (本题用 g++ -std=c++17 -O0 编译。)
用 std::list 反转
补全:用 std::list 自带的成员函数把整条链反转,然后输出「第一个/最后一个」,格式如 甲/乙。 (本题用 g++ -std=c++17 -O0 编译。)