专栏首页村雨牛客网-C/C++专项训练知识点总结

牛客网-C/C++专项训练知识点总结

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/github_39655029/article/details/88729023

  • C与C++结构体的区别:
    • C中结构体无函数,但C++的结构体可以有函数;
    • C++的结构体可以被类取代,因为类相对于结构体具有封装性等优势;
  • C++中结构体与类的区别:结构体中的成员访问权限不声明时默认是公开的,但是类确实私有的;
  • vector与list的区别:
    • vector拥有一段连续的内存空间,因此支持随机存取,如果需要高效的随即存取;
    • list拥有一段不连续的内存空间,如果需要大量的插入和删除,应该使用list;
    • vector::iterator支持“+”、“+=”、“<”等操作符;
    • list::iterator不支持[]运算符;
  • 构造函数的执行先执行父类,再执行子类,析构函数则相反;
  • 指针是个变量,地址是个常量,指针的值是地址,指针能进行加减操作,但地址必须通过赋值操作后才可以;
  • 程序在编译前由预处理器对预处理命令进行处理;
  • X&(X-1):统计X的二进制中1的个数;X|(X+1):统计X的二进制中0的个数;
  • unordered_map:所谓的哈希map,其底层数据结构为hashtabllepriority_queue:优先级队列,即二叉树,其底层数据结构是heap;
  • const修饰类的成员函数形式为:int Function() const,该函数不能修改任何的成员变量,不能调用非const成员函数(非const成员函数可以修改成员变量);
  • C++的虚函数必须是类的一个成员,而不允许是类的友元;
  • 纯虚函数是在基类中没有实现的函数,虚函数在基类中实现了,但在派生类中可能有不同版本的函数;纯虚函数是在基类中等于0的函数;抽象类是含有纯虚函数的类;抽象类指针可以指向不同的派生类;
  • 静态局部变量特点:
    • 变量在全局数据区分配内存;
    • 静态局部变量在程序执行到该对象的声明处是被首次初始化,以后的函数调用不用再进行初始化;
    • 静态局部变量一般在声明处初始化,若没有显式初始化,则会被程序自动初始化为0;
    • 是总驻留在全局数据区,知道程序运行结束。但其作用与为局部作用于,当定义它的函数或语句块结束时,其作用域随之结束;
  • 访问vector中的数据的两种方法:
    • vector::at():做边界检查,若是访问越界,将抛出异常;
    • vector::operator():为了与C语言进行兼容,不用做边界检查;
  • 指针指向字符串时,字符串是常量,存储在常量区,而指针存储在栈区,不能对其操作修改;
  • Nagle算法的规则;
    • 若包长度达到MSS,则允许发送;
    • 若包含有FIN,则允许发送;
    • 设置了TCP_NODELAY,则允许发送;
    • 未设置TCP_CORK选项时,若所有发出去的小数据包(包长度小于MSS)均被确认,则允许发送;
    • 上述条件均不满足,但发生了超时(一般为200ms),则立即发送;
  • C++中,多文件结果的程序中,通常把类的定义单独存放在头文件中;
  • 当基类构造函数需要外部传递参数才能够进行初始化时,派生类必须显式定义构造函数,为基类传递参数;基类如果不需要传递或可以不传递参数时,派生类可以不用显式定义构造函数;

未完待续。。。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 12个超好用的IntelliJ IDEA 插件!你用过几个?

    如果说IntelliJ IDEA是一款现代化智能开发工具的话,Eclipse则称得上是石器时代的东西了。

    程序员追风
  • 苏宁的Node.js实践:不低于Java的渲染性能、安全稳定迭代快

    苏宁的技术架构,由苏宁云、基础支撑、后台、中台和前台组成。苏宁云主要为业务开发提供云服务。基础支撑,包括数据连接协议、防火墙、日志、中间件、短信等。在苏宁云和基...

    五月君
  • 把日志灌入到Elasticsearch的好处以及具体实现

    一般来讲一个高并发高性能的系统,日志是非常庞大的,随时可能高达几个T,一台服务器的硬盘极有可能装不下,而Elasticsearch的集群可以分布在不同的机器上,...

    算法之名
  • 用Build来构建对象的写法 顶

    如果一个类的属性过多,用构造器来构建对象很难写,因此我们时用Build方式来构建对象。写法大致如下。

    算法之名
  • 这样设计 Java 异常更优雅,赶紧学!

    异常处理是程序开发中必不可少操作之一,但如何正确优雅的对异常进行处理确是一门学问,笔者根据自己的开发经验来谈一谈我是如何对异常进行处理的。

    Java技术栈
  • 重读《学习JavaScript数据结构与算法-第三版》- 第4章 栈

    本章是重读《学习JavaScript数据结构与算法-第三版》的系列文章,本章为各位小伙伴分享数据结构-栈的故事,请让胡哥带你走进栈的世界

    胡哥有话说
  • Springboot之启动原理

    SpringBoot为我们做的自动配置,确实方便快捷,但是对于新手来说,如果不大懂SpringBoot内部启动原理,以后难免会吃亏。所以这次博主就跟你们一起一步...

    用户3467126
  • 重读《学习JavaScript数据结构与算法-第三版》- 第3章 数组(二)

    读《学习JavaScript数据结构与算法》- 第3章 数组,本小节将继续为各位小伙伴分享数组的相关知识:ES6数组的新功能。

    胡哥有话说
  • 人生靠反省,Java靠泛型

    昨天有同事问 UserService、XxxService 都会调用 Dao 的 insert、update ... ...,这些重复的代码,有没有办法变得灵活...

    一猿小讲
  • Spring3 MVC请求参数获取的几种方法

    例如,访问user/123/lei路径时,执行以上方法,其中,参数id=123,name=lei

    一觉睡到小时候

扫码关注云+社区

领取腾讯云代金券