CMU 15-445 (FALL 2022) Project #0 - C++ Primer 题解 Trie

CMU 15-445 (FALL 2022) Project #0 - C++ Primer 题解

We will make the auto-grader for each assignment available to non-CMU students on Gradescope after their due date for CMU students. In exchange for making this available to the public, we ask that you do not make your project implementations public on Github or other source code repositories.

CMU为外校的学生提供了自动测试平台和公开课,代价是什么呢?那就是不要直接公开代码在网上。还请大家遵守。

这篇博客记录一些踩的坑,欢迎交流

知识点

语言基础

  • C++基础语法
  • unique_ptr的用法
  • std::move可以将左值显示转化为右值
  • 并发锁的使用

算法要求

  • Trie本身的原理很简单,可以实现O(length)的增删改查操作,当然缺点就是空间换时间
  • 可以先做这道题。也可以直接做

开发环境

我是在自己的Ubuntu22.04的服务器上搭建环境的。但是用的本地Clion开发。如果要用win,记得一定要先在linux上面把源文件下好,不然脚本会出现错误。

本地测试

注意在make前把想要测试的题目Test文件中的DISABLED_给去掉。
我之前不知道这个设置浪费了很久时间debug
CMU 15-445 (FALL 2022) Project #0 - C++ Primer 题解 Trie_第1张图片

  • 然后你可以通过自己写代码增加一些样例
  • 比如
TEST(MyStarterTest,MyTest1)
{
  {
    Trie trie;
    bool success;

    trie.Insert<int>("aaa",1);
    success=trie.Insert<int>("aa",1);
    EXPECT_EQ(success, true);
  }
}
TEST(MyStarterTest,MyTest2)
{
  {
    Trie trie;
    bool success;

    trie.Insert<int>("abc",1);
    success=trie.Insert<int>("abed",1);
    EXPECT_EQ(success, true);
  }
}
  • MyStarterTest就是一个测试组,函数的第二个参数是测试的名字。通过对值比较判断测试是否通过
  • 比如EXPECT_EQ(success, true),就是判断变量success是否为true
  • EXPECT_EQ((*child_node)->GetKeyChar(), 'c');判断该节点是否key为c
  • EXPECT_NE(child_node, nullptr);判断child_node是否不等于nullptr
  • 自定义测试效果
    CMU 15-445 (FALL 2022) Project #0 - C++ Primer 题解 Trie_第2张图片

网上评测

CMU 15-445 (FALL 2022) Project #0 - C++ Primer 题解 Trie_第3张图片
网址是gradescope。然后填入上面的邀请码,学校记得写CMU。

提交记得用zip不能用github!!!

代码格式

CMU 15-445 (FALL 2022) Project #0 - C++ Primer 题解 Trie_第4张图片
本地测试通过之后直接去网上提交,直接傻眼。
CMU 15-445 (FALL 2022) Project #0 - C++ Primer 题解 Trie_第5张图片
总之记得通过这个检查自己的代码格式是否正确。

CMU 15-445 (FALL 2022) Project #0 - C++ Primer 题解 Trie_第6张图片
然后经历过无数次debug后发现自己有个初值没赋,呵呵,呵呵呵呵。

然后这个OJ有个比较好的地方就是你可以通过cout打印出你想要的信息
CMU 15-445 (FALL 2022) Project #0 - C++ Primer 题解 Trie_第7张图片

注意事项

  • 遇到问题尝试在不同的地方输出测试信息,然后顺着程序控制流看,如果多次找不到错误一定要仔细,想想自己是不是哪里看漏了
  • 如果做不出来,可以尝试搜索提到的知识点,或者直接问我。私聊或者发邮件[email protected]

你可能感兴趣的:(C++,数据库,#,CMU15-445,c++,数据结构,数据库)