自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(78)
  • 资源 (3)
  • 收藏
  • 关注

原创 C++11 新特性:多线程支持 - 异步操作的执行策略

std::async 函数用于异步执行一个任务,返回一个对象,该对象最终将持有函数的返回值,std::async可以接受一个启动策略作为其第一个参数,这些策略决定了任务的执行方式。

2024-04-26 09:00:00 125

原创 C++11 新特性:多线程支持 - std::atomic 原子操作

std::atomic是C++11中引入的一个模板类,用于实现原子操作,即在多线程环境下不可被中断的操作。这对于保证并发编程中数据的一致性和线程安全至关重要。

2024-04-25 09:00:00 192

原创 C++11 新特性:多线程支持 - notify_all 的用法

C++11 notify_all 方法用于唤醒所有等待该条件变量的线程,是在某些条件变化对所有等待线程都是有意义时的理想选择。

2024-04-24 10:00:00 217

原创 C++11 新特性:多线程支持 - 条件变量

为C++提供了一种强大的线程同步机制,特别适用于需要等待特定条件成立的场景。

2024-04-23 18:54:48 200

原创 C++11 新特性:多线程支持 - std::recursive_timed_mutex

std::recursive_timed_mutex 提供了一种灵活的方式来处理需要在同一线程中多次获取锁的情况,特别是在递归调用场景中。超时功能也增加了程序的健壮性,防止了因等待锁而导致的潜在死锁。

2024-04-21 11:36:42 147

原创 C++11 新特性:多线程支持 - std::timed_mutex

可以让线程在等待获取互斥量的过程中考虑超时,这对于需要避免长时间等待的场景特别有用。

2024-04-19 09:00:00 280

原创 C++11 新特性:多线程支持 - 互斥锁

C++11 的多线程库为开发者提供的线程同步工具,包括各种类型的锁。今天介绍的是最简单、最常用的互斥锁,最后一个示例用到了条件变量和它的通知机制,这个我后面文章会介绍其用法。通过上述示例,我们可以看到如何在实际编程中利用这些锁来保护共享数据,避免数据竞争和死锁等问题,确保程序的正确性和稳定性。

2024-04-18 09:00:00 314

原创 C++11 新特性:多线程支持 - 线程管理

本文介绍 C++11 中线程的创建、等待和分离的使用,通过代码示例展示它们的用法。

2024-04-17 09:00:00 249

原创 C++11 新特性:多线程支持概述

C++11 引入了对多线程的原生支持,这是一个重大的改进,使得众多开发者翘首以盼的并发编程成为 C++ 语言的一部分。在 C++11 之前,开发者需要依赖于操作系统提供的 API 或第三方库来实现多线程。C++11 通过在标准库中添加了多线程支持,简化了多线程程序的编写,并提高了代码的可移植性和开发效率。后续我会通过几篇文章介绍多线程支持的一些细节,当然也不是完全描述,毕竟要覆盖多线程的各个方面,足够写一本书了。

2024-04-16 09:00:00 349

原创 C++11 新特性:新增算法

这些新增的算法增强了 C++ 的标准库,为开发者提供了更多的工具来编写高效和简洁的代码。通过利用这些算法,可以减少手写的代码量,同时也可以保证代码的性能和可读性。

2024-04-15 09:00:00 541

原创 C++11 新特性:正则表达式

C++11 引入的正则表达式库为 C++ 程序员提供了一个强大且灵活的工具,用于执行复杂的文本处理任务。利用这些特性,开发者可以高效地处理和分析文本数据,解决了 C++ 处理文本的部分痛点。

2024-04-14 00:09:56 1197

原创 C++11 新特性:更强大的随机数功能

C++11 中引入的随机数库大大增强了随机数生成的能力和灵活性,解决了 C++11 之前依赖rand()的种种问题。使用 C++11 提供的多种随机数引擎和分布,开发者可以根据具体需要,生成高质量的随机数,满足加密、模拟、游戏开发等多种场景的需求。

2024-04-13 10:00:00 294

原创 C++11 新特性:std::unordered_set 无序集合

std::unordered_set 是 C++11 中引入的基于哈希表的集合容器,它支持快速的元素查找、插入和删除操作。理解的内部实现可以帮助开发者更有效地使用它,特别是在需要高效管理一组唯一元素的场景下。

2024-04-12 09:00:00 530

原创 C++11 新特性:tuple 元组

std::tuple是 C++11 中引入的一种非常有用的类型,它通过组合多个可能不同类型的值为一个单一对象,为 C++ 编程提供了极大的灵活性和方便性。std::tuple的内部实现复杂,但它提供了简单的接口用于创建、访问和操作多个数据,从而使得处理多返回值、参数传递和数据组织等编程任务变得简单和直观。随着结构化绑定的引入(C++17),操作元组变得更加易于管理和阅读。

2024-04-12 01:50:31 1387

原创 C++11 新特性:std::unordered_map 无序映射

std::unordered_map 是 C++11 中引入的一个非常有用的容器,特别是在需要快速查找、插入和删除键值对的场景下。它通过提供平均常数时间复杂度的操作,帮助开发者编写更高效的代码。不过,使用时需要注意,由于其基于哈希表实现,元素的存储顺序是不确定的。

2024-04-11 09:00:00 1685

原创 C++11 新特性:std::forward_list 前向列表

std::forward_list 是 C++11 中引入的一个高效的单向链表容器,它提供了灵活的元素管理方法,适用于需要频繁进行插入和删除操作的场景。由于其内部实现只维护单向链接,在空间使用上比std::list更加高效。通过合理利用提供的方法,可以在保证性能的同时,编写出清晰、简洁的代码。

2024-04-10 09:00:00 309

原创 C++11 新特性:std::array

std::array是 C++11 中引入的容器类型,它封装了固定大小的数组,提供了类似于 STL 容器的接口,同时保持了 C 风格数组的性能特性。与普通数组相比,std::array更安全、更易于使用,并且支持迭代器。

2024-04-09 22:49:32 295

原创 C++11 新特性:STL 新增数据结构

C++11 通过引入这些新的数据结构,不仅增强了 C++ 的标准库,还提高了C++编程的便利性和效率。这些数据结构各有特点,适用于不同的场景,如std::array提供了比原始数组更安全的固定大小数组,提供了更高效的单向链表实现,和提供了基于哈希表的集合和映射,std::tuple则为多种类型的值提供了便捷的封装。通过合理利用这些数据结构,可以使 C++ 程序更加灵活。

2024-04-08 11:26:40 250

原创 C++ 11 新特性:内存对齐 alignof 和 alignas

C++11 中的内存对齐特性提供了直接控制数据对齐的能力,这对于优化程序性能、减少 CPU 访问内存的开销非常重要。通过合理使用alignof和alignas,开发者可以在需要时显著提升数据访问速度,尤其是在性能敏感的应用程序中。当然,也要注意合理选择对齐大小,避免不必要的内存浪费。

2024-04-07 16:17:28 350

原创 C++11 新特性:long long 超长整数类型

long long是 C++11 中引入的整数类型,它们至少提供 64位 的整数存储能力,极大地扩展了 C++ 程序可以处理的整数范围。这使得 C++ 程序能够更容易地处理大整数,同时保持良好的跨平台兼容性。

2024-04-06 16:32:55 679

原创 C++11:explicit 关键字

在 C++ 中,explicit关键字用于防止类的构造函数或转换运算符进行隐式类型转换。默认情况下,如果一个构造函数只需要一个参数,或者一个转换运算符只转换为一个特定类型,编译器会自动使用它们进行隐式转换。虽然这可以使代码更加简洁,但有时也会导致意料之外的行为,尤其是在类型转换不明显或不期望发生时。通过在构造函数或转换运算符前添加explicit关键字,可以要求编译器只在显式转换时使用这些函数,从而增加代码的清晰度和安全性。

2024-04-04 11:20:03 239

原创 C++11 新特性:非受限联合体

C++11 中引入的非受限联合体,极大地增强了联合体的功能和灵活性,允许在联合体中使用具有复杂行为的类类型。这样联合体不仅仅可以用于传统的用途(如类型节省和类型重解释),还可以用于更复杂的场景,如状态管理和变体类型的实现。

2024-03-25 13:12:26 449

原创 C++11 新特性:enum class 关键字

enum class为 C++ 枚举类型提供了更强的作用域控制和类型安全性,是现代 C++ 编程中推荐使用的枚举定义方式。通过使用enum class,可以避免命名冲突,提高代码的可读性和安全性,同时也使得枚举类型的使用更加灵活和强大。

2024-03-24 13:23:02 456

原创 C++11新特性:sizeof... 运算符

sizeof...运算符在 C++11 及其后续版本中为模板编程提供了强大的工具,使得编译时计算参数包大小成为可能。这不仅可以用于简单的数量计算,还可以配合递归模板元编程、编译时断言等技术,实现更复杂的编译时逻辑。通过合理利用sizeof...,开发者可以编写出更灵活、高效的模板代码。

2024-03-24 13:18:41 275

原创 C++11 新特性:default 和 delete

C++11 中引入的default和delete关键字,为类设计提供了更大的灵活性和控制力。通过显式地声明类的特殊成员函数为默认或删除,开发者可以更精确地指定类的行为,使得类的设计意图更加明确,同时也提高了代码的可读性和维护性。

2024-03-24 13:09:43 297

原创 C++11 新特性:继承构造函数

C++11 中引入的继承构造函数特性极大地简化了派生类的编写,通过允许派生类自动继承基类的构造函数,减少了代码的重复和维护成本。这提高了代码的复用性和可维护性,使得基于类的继承更加灵活和强大。

2024-03-23 09:00:00 761

原创 C++11新特性:自定义字面量

自定义字面量通过定义一个特殊的字面量运算符来实现。这个运算符以operator""为前缀,后跟一个唯一的标识符。根据字面量的类型(整数、浮点数、字符、字符串或布尔值),这个运算符可以有不同的形式。C++11 中引入的用户定义字面量为类型安全和代码可读性提供了强大的支持。

2024-03-22 23:48:26 486

原创 C++11 新特性:委托构造函数

委托构造函数是 C++11 中对类构造函数设计的一项重要增强。通过允许一个构造函数在其初始化列表中调用同一个类的另一个构造函数,委托构造函数极大地提高了代码的重用性和清晰度。这项特性简化了共享初始化代码的管理,减少了代码重复,提高了代码的维护性和可读性。正确使用委托构造函数,可以使得 C++ 类的设计更加简洁和高效。

2024-03-22 11:00:00 230

原创 C++11 新特性:空指针 nullptr

nullptr关键字的引入,显著提升了 C++ 在空指针表示方面的类型安全性和代码清晰度。通过提供一个明确的、类型安全的空指针字面量,nullptr解决了使用0或NULL可能导致的类型混淆和重载解析问题,是现代C++编程中推荐使用的空指针表示方法。

2024-03-22 09:00:00 262

原创 C++11 新特性:final 和 override

final和override这两个关键字的引入,使得C++ 在面向对象编程方面的能力更加完善。通过使用final,类的设计者可以控制类的继承关系和虚函数的重写行为,而override则强化了派生类对基类虚函数重写的准确性,避免了因签名不匹配而导致的错误。这两个关键字的使用,提高了C++程序的安全性、清晰度和维护性。

2024-03-21 09:00:00 762

原创 C++11 新特性:常量表达式 constexpr(下)

constexpr在模板编程中的应用极大地扩展了模板的能力,使得编译时计算、类型检查和条件分支成为可能,从而提高了代码的效率和安全性。

2024-03-20 14:24:40 555

原创 合并两个 Git 仓库,保存所有提交记录

将两个 Git 代码库合并成一个同时保留修改记录的过程,可以通过几个步骤完成。这里提供一种常见的方法,使用git remote和git merge命令来实现。

2024-03-19 18:01:57 361

原创 C++11 新特性:常量表达式 constexpr(上)

常量表达式(Constant Expression)指的是值在编译时就已经确定,并且在程序执行过程中不会改变的表达式。在 C++ 中,常量表达式可以用于定义编译时常量、数组的大小、整型模板参数、编译时断言等场合,是提高程序效率、实现编译时计算的重要工具。

2024-03-19 09:00:00 608

原创 C++11 新特性:列表初始化

C++11 引入了一种新的初始化方式,称为列表初始化(list initialization),也被称为统一初始化或初始化列表。列表初始化提供了一种更加通用和一致的方式来初始化对象,无论是基本数据类型、数组、结构体还是容器类。列表初始化的引入减少了 C++ 中初始化方式的复杂性和歧义性,同时也增加了编码的安全性。

2024-03-18 09:00:00 278

原创 C++11:编译时断言 static_assert

static_assett 是 C++11 引入的编译时断言特性,允许在编译期进行条件检查,并在条件不满足时产生编译错误。这一特性非常有用,因为它可以在编译阶段就发现潜在的错误,而不是等到运行时。这对于模板编程、类型检查、常量表达式的验证等场景非常重要。

2024-03-17 15:00:33 778

原创 C++ 11:基于范围的 for 循环

基于范围的for 循环(Range-based for loop)是 C++11 标准引入的一项特性,它提供了一种更简洁、更安全的遍历容器(如数组、向量等)的方式。与传统的for循环相比,基于范围的for循环自动处理迭代,避免了迭代器或下标可能引入的错误,使代码更加易于编写和理解。

2024-03-17 14:45:11 583

原创 C++11:自动类型推导 auto 和 decltype(下)

auto 书写格式比 decltype 简单,但它的推导规则复杂,有时候会改变表达式的原始类型;而 decltype 比较纯粹,一般会坚持保留原始表达式的任何类型。

2024-03-16 21:31:53 790

原创 C++11:自动类型推导 auto 和 decltype(中)

今天我们来聊聊decltype关键字,它是 C++11 新增的一个关键字,和auto的功能一样,都是用来在编译时期进行自动类型推导。decltype是「declare type」的缩写,译为「声明类型」。既然已经有了auto关键字,为什么还需要decltype?因为auto并不适用于所有的自动类型推导场景,在某些特殊情况下auto用起来非常不方便,甚至压根无法使用,所以引入了decltype关键字。下面通过介绍decltype的用法,体会一下和auto的不同。decltype。

2024-03-16 09:00:00 625

原创 C++11:自动类型推导 auto 和 decltype(上)

auto和decltype。这两个关键字在提高编码效率、代码可读性以及维护性方面起到了巨大作用。今天,我们将深入探讨auto的用法,并通过实际的代码示例来说明怎么使用它。

2024-03-15 19:46:15 547

原创 C++演变历史

C++ 从诞生到现在历经四十余年,经历了几个版本的更新,C++23 更容易学习和使用。

2024-03-15 14:50:09 670

1000个软件中经典图标-16*16PNG文件

1000个软件中经典图标-是单个的16*16PNG文件,需要的下。

2011-04-26

VC6.0为对话框添加菜单

在VC中为对话框添加菜单,初学者可以看看,高手不用浪费时间了,很简单的东西,记下来放到这里做笔记。 一个Word文档,本来想贴在空间里,结果图片不能直接复制,不想再挨个截图,放在这里。

2010-02-23

Info-zip源代码

Info-zip源代码,zip格式的压缩与解压缩源代码

2007-06-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除