含笑话春风
码龄3年
关注
提问 私信
  • 博客:15,420
    15,420
    总访问量
  • 25
    原创
  • 1,916,670
    排名
  • 9
    粉丝
  • 0
    铁粉

个人简介:在校摸鱼大学生

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:天津市
  • 加入CSDN时间: 2021-07-20
博客简介:

weixin_60351940的博客

查看详细资料
个人成就
  • 获得8次点赞
  • 内容获得0次评论
  • 获得17次收藏
创作历程
  • 25篇
    2022年
成就勋章
TA的专栏
  • C++11标准库
    25篇
兴趣领域 设置
  • 编程语言
    c++
  • 开发工具
    visualstudio
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

183人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

《C++11标准库》5.1.1Pair

class pair 可将两个 value视为一个单元。C++标准库内多处用到了这个 class 。尤其是容器 map、multimap、unordered_map和 unordered_multimap就是使用 pair 来管理其以 key/value pair形式存在的元素。任何函数如果需要返回两个 value,也需要用到 pair,例如 minmax()。pair的结构定义于<utility>,且提供如下所示各种操作:原则上你可以对pair<>执行 creat,copy
原创
发布博客 2022.05.11 ·
551 阅读 ·
2 点赞 ·
0 评论 ·
0 收藏

《C++11标准库》5.1Pair和Tuple(简介)

C++标准库第一版,C++98提供了一个简单的class,用来处理类型不同的两个(一对)值,而不需要再为它们定义一个特别的 class。当标准函数需要返回 value pair,或者当容器元素是个 key/value pair时,就会用上这样一个 class。TR1引入了一个 tuple class,他将上述概念延伸,接受任意(但仍有限)个元素。标准库实现保证可移植范围是:允许 tuple带有最多10个类型不同的元素。到C++11,tuple class 被重新实现,采用 variadic temp
原创
发布博客 2022.05.10 ·
304 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

《C++11标准库》4.6分配器(Allocator)

C++标准库在许多地方采用特殊对象处理内存的分配和归还,这样的对象称为 allocator(分配器)。Allocator 是一种特殊的内存模型,被当成一种——用来把”内存需求“转换为”内存低级调用“的抽象层。如果在相同时间采用多个不同的 allocator 对象,便可以在同一个程序中采用不同的内存模型。最初,allocator 是作为 STL 的一部分而引入,用来处理诸如 PC 上不同的指针类型(例如 near、far、huge指针)。现在则作为”运用某种内存模型“的技术方案的基础,是的诸如共享内存
原创
发布博客 2022.05.09 ·
496 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

《C++11标准库》4.5并发与多线程(概述)

在C++11之前,语言本身和C++标准并不支持并发,虽然编译器可以实现并对此提供某种支持。但在C++11中,不论是内核语言还是标准库都加强支持并发编程。以下内容适用于内核语言:*如今具备了这样一个内存模型,保证当你修改“被不同的两个线程使用的”两个不同对象时,它们彼此独立。在C++11之前,并不保证“某一线程涂写一个 char “不会干涉”另一线程涂写另一个char“。*引入一个新关键字 thread_local,用来定义”线程特定“的变量和对象。标准库提供以下特性:*若干线程安全相关的
原创
发布博客 2022.05.09 ·
300 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

《C++11标准库》4.3.1标准的 Exception Class(异常类)

所有被语言本身或标准库抛出的异常,都派生自基类 exception ,定义于 <exception> 。它是若干标准异常的基类,它们共同形成一个类体系,如图所示,这些标准异常可被分为三组:1:语言本身支持的异常。2:C++标准库发出的异常。3:程序作用域之外发出的异常。逻辑错误通常可以避免,因为其错误发生在作用域内,例如先决条件被违反。运行期异常则是由一个位于程序作用域之外的原因触发,例如资源不足。针对语言支持而设计的异常类:此类异常用以支撑某些语言特性,所以,从
原创
发布博客 2022.05.07 ·
1238 阅读 ·
2 点赞 ·
0 评论 ·
0 收藏

《C++11标准库》4.3差错和异常(Error and Exception)的处理

C++标准库由不同成分构成。来源不同,设计与实现的风格迥异。而差错处理和异常处理正是这种差异的典型表现特征。对于标准库中的一部分,例如 string class,支持具体的差错处理,它们检查所有可能发生的差错,并在差错发生时抛出异常。至于其它部分,例如 STL和 valarray,优先考虑执行效率而不是安全,因此几乎不检验逻辑差错,并且只在运行期发生差错时才抛出异常。...
原创
发布博客 2022.05.06 ·
296 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

《C++11标准库》4.2头文件( Header File)

在C++标准化过程中,将C++标准库中所有的标识符都定义于 namespace std 内,这样的作法不具备向后兼容性,因为原先的C/C++头文件都将C++标准库的标识符定义于全局范围。标准化过程中有些 class 接口也有了变动。为此,C++standard 特别引入了一套新的头文件命名风格,这么一来组件的供应商便可以通过“提供旧式头文件”来达到向后兼容的目的。既然有必要重新定义定义标准头文件的名称,C++11正好借此机会把头文件的扩展名做一个规范,以往的头文件的扩展五花八门,例如 包括 .h, .h
原创
发布博客 2022.05.05 ·
944 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

《C++11标准库》4.1命名空间(Namespace)std

当我们在采用不同的模块或程序库时,经常会出现名称冲突的现象,这是因为不同的模块和程序库可能对不同的对象使用相同的标识符(identifier)。Namespace 正是用来解决这种名称冲突问题的。所谓的 namespace 指标识符的某种可见范围。和 class 不同,namespace 具有扩展开放性,可发生于任何源码文件上。因此,你可以使用一个 namespace 来定义若干组件,而它们可散布于多个实质模块内。这类组建的典型例子就是 C++标准库,在C++标准库内就使用了一个namespace。
原创
发布博客 2022.05.04 ·
1182 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

《C++11标准库》3.2.2main()定义式

对于 main() 函数,有一个重要而常被误解的核心语言点:唯一“正确且具有移植性”的 main() 函数。根据C++标准,main() 只有两种定义式具备可移植性,那就是:int main(){ ...... return 0;}和int main( int argc , char* argv[] ){ ...... return 0;}对于第二个样例中的参数 argv ,也就是命令行实参所形成的 array ,其类型也可定义为 char** ,但是要注
原创
发布博客 2022.05.03 ·
520 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

《C++11标准库》3.2.1基础类型的明确初始化(Explicit Initialization for Fundamental Type)

如果你使用“一个明确的构造函数调用,但不给实参”这样的语法,基础类型会被设置初值0:例如:int i1 ;//未定义值。int i2 = int() ;//初始化为 0 。int i3{}//初始化为 0 。这个特性使你可以写出“确保无论任何类型,其值都有一个确凿的类型的默认值”的 template code(模板编码)例如下面的函数中,初始化保证了“ x 如果是基础类型,会被初始化为 0 。”:template < typename T >void f(){
原创
发布博客 2022.05.02 ·
491 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

《C++11标准库》3.2 Template虽旧犹新的语言特性

Nontype Template Parameter(非类型模板参数)Type parameter(类型参数)之外,我们也可以为 template 使用 nontype parameter(非类型参数)。这样的参数亦被视为 template 类型的一部分。例如对于标准的 class bitset<>,你可以传递bit 个数为实参。例如:bitset< 32 > flags32 ;// 32bits 的 bitsetbitset< 50 > flags50 ;/
原创
发布博客 2022.05.01 ·
268 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

《C++11标准库》3.1.14新的基础类型(New Fundamental Data Type)

对于以下的新式基础数据类型,定义于 C++11;* char16_t 和 char32_t:char16_t :一个char16_t只能保存2字节,所以只能用0000~ffff范围内的字符对其进行初始化或赋值,使用比0000 ffff大的编码,直接报错。二进制打印出char16_t的值,严格等于utf16编码,在这个范围内,也就是严格等于unicode编码。char32_t:一个char32_t四个字节,可以保存所有的unicode字符。但是要注意初始化时,字符常量前要用U.* long l
原创
发布博客 2022.04.30 ·
161 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

《C++11标准库》3.1.13带领域的(Scoped)Enumeration (enum class)

C++11允许我们定义 scoped enumeration(作用域的枚举)--又称为 strong enumeration 或 enumeration class。这是C++ enumeration value(或 enumerator(枚举符))的一个比较干净的实现。其声明格式为:enum class 枚举名:类型 //若没有声明类型,则默认为 int{ 枚举元素表列;}例如:enum class Salutation : char { mr , ms , co , non
原创
发布博客 2022.04.29 ·
883 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

《C++11标准库》3.1.12新的函数声明语法

在某些时候,函数的返回类型取决于某个表达式对实参的处理。然而对于类似如下代码:template <typename T1, typename T2>decltype( x + y ) add( T1 x, T2 y);这样的定义在C++11之前是不能实现的,因为返回式所使用的对象未被引用,或未在作用域内。但是在C++11中,你可以将一个函数的返回类型声明在参数之后:template <typename T1, typename T2>add( T1 x, T2
原创
发布博客 2022.04.28 ·
567 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

《C++11标准库》3.1.11关键字decltype

decltype 是C++11新增的一个关键字,用于使编译器在编译期找出表达式的类型,这其实就是常被要求的typeof 的特性的体现,但由于原有的 typeof 缺乏一致性又不完全,所以才引用这个关键字。其格式为:decltype(exp) temp = value ;其中 exp可为变量,函数或一个表达式,作为 temp 的类型。当 exp 为一个变量,则返回该变量的类型(包括顶层的 const 和引用)当 exp 为一个函数时,编译器并不会实际调用函数,而是当调用发生时使函数的返回
原创
发布博客 2022.04.27 ·
566 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

《C++11标准库》3.1.10 Lambda,Capture

C++11引入了 lambda,允许 inline 函数的定义式被用作为一个参数,或是一个 local 对象。Lambda 改变了C++标准库的用法。比如使用 lambda搭配 STL算法和容器,使用 lambda 定义并发代码。Lambda 的语法所谓的 lambda 是一份功能定义式,可被定义于语句或者表达式内部。因此,你可以拿 lambda当作 inline 函数使用。最小型的 lambda 函数没有参数,什么也不做,例如:[] { std::cout <<
原创
发布博客 2022.04.26 ·
804 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

《C++11标准库》3.1.9崭新的 Template 特性与Alias Template

自C++11起,template 可以拥有那种“得以接受个数不定之 template 实参”的参数。此能力称为 variadic template (可变参数宏)。例如,对于print()函数,得以在调用它时给予不定个数的实参且各具不同类型:void print(){ std::cout << "执行无参print()" << std::endl;}template<typename T,typename... Types>void print(c..
原创
发布博客 2022.04.24 ·
491 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

《C++11标准库》3.1.8关键字constexpr与const

自 C++11起,constexpr 可用来让表达式核定于编译期。例如:constexpr int square (int x){ return x*x;}float a[square(9)];//此数组大小为81这个关键字修正了在C++98中使用数值极限时出现的问题,在C++11之前,如下代码:std::numeric_limits<short>::max()无法被用作一个常量,虽然他在功能上等同于宏 INT_MAX。如今,在C++11中,这样的一个式子被声
原创
发布博客 2022.04.23 ·
406 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

《C++11标准库》3.1.7关键字 noexcept

C++11提供了关键字 noexcept,用来指明某个函数无法—或不打算抛出异常。例如:void foo() noexcept;声明了 foo() 不打算抛出异常。若有异常未在 foo() 内被调用—亦即如果 foo() 抛出异常,程序会被终止,然后 std::terminate() 被调用并默认调用 std::abort() 。noexcept 瞄准了空异常明细所显示的许多问题。运行期检验:C++异常明细仍是被检验于运行期而非编译期,所以它无法对程序员保证每个异常都被处理。
原创
发布博客 2022.04.22 ·
597 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

《C++11标准库》3.1.6新式的字符串字面常量 Raw string(String Literal)

字符串字面常量(String Literal)
原创
发布博客 2022.04.21 ·
1536 阅读 ·
2 点赞 ·
0 评论 ·
6 收藏
加载更多