当前位置: 首页 > news >正文

郑州做网站报价站域名多少钱天津seo渠道代理

郑州做网站报价站域名多少钱,天津seo渠道代理,黑马培训是正规学校吗,网站引导页怎么做C构造函数有几种,分别什么作用 在C中,构造函数有几种不同的类型,每种都有其特定的作用: 默认构造函数:没有参数的构造函数,用于创建对象的默认实例。参数化构造函数:带参数的构造函数&#xf…

C++构造函数有几种,分别什么作用

在C++中,构造函数有几种不同的类型,每种都有其特定的作用:

  1. 默认构造函数:没有参数的构造函数,用于创建对象的默认实例。
  2. 参数化构造函数:带参数的构造函数,允许在创建对象时初始化成员变量。
  3. 拷贝构造函数:以同一类的实例为参数的构造函数,用于复制已有对象。
  4. 移动构造函数:以同一类的实例的右值引用为参数,用于利用即将销毁的对象的资源。
  5. 转换构造函数:允许将其他类型或值隐式转换为当前类类型的实例。
  6. 委托构造函数:一个构造函数调用另一个构造函数来完成初始化,可以是同一个类的其他构造函数。
  7. 初始化列表构造函数:使用成员初始化列表来初始化成员变量,这是最高效的初始化方式。
  8. 常量构造函数:声明为const的构造函数,可以用于创建常量对象。
  9. constexpr构造函数:允许在编译时初始化对象,用于定义和初始化字面量类型的对象。
    每种构造函数的使用场景不同,例如:
    ● 默认构造函数用于快速创建对象,而不需要显式提供任何初始化参数。
    ● 参数化构造函数提供了灵活性,允许在创建对象时定制其状态。
    ● 拷贝构造函数和移动构造函数分别用于对象的复制和移动,是实现资源管理的关键。
    ● 转换构造函数和委托构造函数提供了更灵活的对象初始化方式。
    ● 初始化列表构造函数是C++中推荐的成员初始化方式,因为它可以提高效率。

深拷贝与浅拷贝的区别

  1. 浅拷贝
    ● 定义:浅拷贝仅复制对象本身,不复制对象所指向的动态分配的内存。换句话说,它只复制内存中的对象副本,而不复制对象内部指向的任何动态分配的资源。
    ● 实现:通常通过复制构造函数或赋值运算符实现。
    ● 特点:
    ○ 速度快,因为只涉及基本数据类型的复制。
    ○ 如果原始对象包含指针,浅拷贝会导致两个对象尝试管理相同的动态内存,这可能导致多重释放和悬空指针问题。
  2. 深拷贝
    ● 定义:深拷贝不仅复制对象本身,还递归地复制对象所指向的所有动态分配的内存。这意味着每个对象都有自己的独立资源副本。
    ● 实现:通常需要自定义复制构造函数或赋值运算符来确保所有动态分配的资源都被正确复制。
    ● 特点:
    ○ 速度慢,因为需要递归地复制所有资源。
    ○ 可以安全地使用复制出的对象,而不担心资源管理问题。

STL 容器了解哪些

  1. 序列容器
    ● std::vector: 动态数组,提供快速随机访问。
    ● std::deque: 双端队列,提供从两端快速插入和删除的能力。
    ● std::list: 双向链表,提供高效的元素插入和删除。
    ● std::forward_list: 单向链表,每个元素只存储下一个元素的引用。
    ● std::array: 固定大小的数组,具有静态分配的内存。
  2. 关联容器:
    ● std::set: 基于红黑树,存储唯一元素的集合, 会默认按照升序进行排序。
    ● std::multiset: 允许容器中有多个相同的元素。
    ● std::map: 基于红黑树,存储键值对的有序映射。
    ● std::multimap: 允许映射中有多个相同的键。
    ● std::unordered_set: 基于哈希表,提供平均时间复杂度为 O(1) 的查找。
    ● std::unordered_map: 基于哈希表,存储键值对的无序映射。
  3. 容器适配器(Container Adapters):
    ● std::stack: 后进先出(LIFO)的栈。
    ● std::queue: 先进先出(FIFO)的队列。
    ● std::priority_queue: 优先队列,元素按优先级排序。

vector和list的区别

  1. vector
    ● 基于动态数组:std::vector 基于可以动态扩展的数组实现,这意味着它在内存中连续存储元素。
    ● 随机访问:提供快速的随机访问能力,可以通过索引快速访问任何元素。
    ● 内存分配:通常在内存分配上更紧凑,因为元素紧密排列,没有额外的空间用于链接或指针。
    ● 时间复杂度:
    ○ 元素访问:O(1),即常数时间复杂度。
    ○ 插入和删除:在 vector 的末尾是 O(1),但如果需要在中间插入或删除元素,则可能需要 O(n),因为可能需要移动后续所有元素。
    ● 内存管理:使用连续内存分配,可以利用缓存的优势,提高访问速度。
  2. list
    ● 基于双向链表:std::list 是基于双向链表的容器,每个元素通过节点链接到前一个和后一个元素。
    ● 非连续存储:元素在内存中不是连续存储的,每个元素包含指向前一个和后一个元素的指针。
    ● 时间复杂度:
    ○ 元素访问:O(n),需要从头开始遍历到所需位置。
    ○ 插入和删除:非常快速,特别是当需要在列表中间插入或删除元素时,操作是 O(1),前提是已经拥有指向待插入或删除元素的迭代器。
    ● 内存管理:由于元素间通过指针链接,内存分配可能更分散,但插入和删除操作不需要移动其他元素。
  3. 使用场景
    ● std::vector:
    ○ 当你需要快速随机访问元素时。
    ○ 当你需要在末尾快速添加或删除元素时。
    ○ 当你关心内存使用效率时。
    ● std::list:
    ○ 当你需要在列表中间高效地插入或删除元素时。
    ○ 当你不需要随机访问元素时。
    ○ 当你需要一个灵活的容器,可以动态地添加和删除元素而不会引起大量的内存复制或移动。
http://www.wangmingla.cn/news/108030.html

相关文章:

  • 专业建设网站应该怎么做新站seo优化快速上排名
  • 做网站 徐州成都seo服务
  • 松江b2c网站制作价格佛山网页搜索排名提升
  • 宠物网站建设方案微信怎么推广引流客户
  • 网站建设 后端开发软件seo营销服务
  • 汕头cms建站模板南京网站设计公司
  • 微信公众号开发功能seopc流量排行榜企业
  • 佛山新网站建设市场东莞seo网站制作报价
  • 青岛网站制作工作室网络营销的案例有哪些
  • 宝塔面板做织梦网站网站推广策划书模板
  • 哪个网站可以做纸箱百度一下网页搜索
  • 做外贸网站需要营业执照武汉seo工厂
  • wordpress 翻页功能周口seo
  • seo网站优化插件深圳外包seo
  • 怎么做弹幕视频网站网络广告营销典型案例
  • wordpress建立商城外汇seo公司
  • 在线网站生成器百度云手机登录入口
  • 建设部网站材料价格上涨规定google 浏览器
  • 做网站的职员称呼什么哈尔滨网站推广
  • 做网站上传电子书广州网站优化系统
  • 常宁网站百度上传自己个人简介
  • 政府部门网站建设工作总结搜索网站大全排名
  • 做地方网站能赚钱吗网络推广方式
  • 微信微网站制作教程百度快照投诉中心人工电话
  • 查法人信息的网站网络营销的六大功能
  • 建设银行深圳分行网站微信广告投放收费标准
  • 网站建设是那个行业一键制作免费网站的app
  • 门户网站开发费怎做账seo产品是什么意思
  • 电商详情做的最好看的网站如何自己开发网站
  • 自已建设网站流程游戏推广渠道有哪些