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

8 篇文章 8 订阅
7 篇文章 1 订阅

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
测试

  • 然后你可以通过自己写代码增加一些样例
  • 比如
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
  • 自定义测试效果
    在这里插入图片描述

网上评测

在这里插入图片描述
网址是gradescope。然后填入上面的邀请码,学校记得写CMU。

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

代码格式

在这里插入图片描述
本地测试通过之后直接去网上提交,直接傻眼。
在这里插入图片描述
总之记得通过这个检查自己的代码格式是否正确。

在这里插入图片描述
然后经历过无数次debug后发现自己有个初值没赋,呵呵,呵呵呵呵。

然后这个OJ有个比较好的地方就是你可以通过cout打印出你想要的信息
在这里插入图片描述

注意事项

  • 遇到问题尝试在不同的地方输出测试信息,然后顺着程序控制流看,如果多次找不到错误一定要仔细,想想自己是不是哪里看漏了
  • 如果做不出来,可以尝试搜索提到的知识点,或者直接问我。私聊或者发邮件antio2@qq.com
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值