C++11-容器

**# array
在这里插入图片描述
内部就是一个数组,只是将其包装为一个容器array;使其融入STL;
G4.9版:
在这里插入图片描述

hashtable(不是新东西)

(1)基本类型都有对应的hash function;hash可以看出基本类型的hash function应该是一个模板在这里插入图片描述
在这里插入图片描述
(2)上面是对hash的测试,可以看例如hash()(123),其中hash()是创建了临时对象,然后(123)应该是重载的()运算符,返回值即为hash code;
(3)在C++2.0之前,标准库中没有对于string的hash function;

标准库中hashfuntion的实现

在这里插入图片描述
(1)一个泛化版本,和若干个特化;对于数值直接利用数值;
(2)右侧调用接口为int i=hash()(32);因此,如果自己写一个Foo的hash function也需要有相同的接口在hash特化中重载()运算符;

怎么自己写一个hash function

在这里插入图片描述
(1)产生出的hash_code越乱越好,不要重复;
(2)以类customer为例,以它为元素放在容器里,然后计算它的hash_code;
(3)上图中形式2设计为一般函数,形式1设计为成员函数;
(4)右侧调用函数时,形参为函数类型size_t(*)(const Customer&),左侧会自动产生一个函数对象;
(5)原子拆分,再相加形成hash function太过天真;分的有fname,lname都是string基本类型有自己的hash function,以及num是Long类型;就是在用hash_function的特化版本;把各自的hash_code简单相加,这样会碰撞多,一个篮子的链表过长;
(6)调用库中的函数hash_val;

一个万用的hashfution

在这里插入图片描述
(1)template<typename…Types>新增,可以添加任意多个模板参数;variadic template;
(2)1和2的区别在于第一个参数分别是size_t&和const Type&…;
(3)1,2,3是函数重载;用最泛化的版本分离参数个数,1分为seed和所有传入(例如3个)的参数,然后调用2,在2中调用自己hash_val(seed,args…),分为seed,val,和另外2个参数,然后重复分解;过程中依次每次取出一个参数做seed的变化用;当只剩下seed和位移参数时,到3执行;
(4)将不定量的参数不断拆解;

tuple容器

在这里插入图片描述
(1)为什么是32,现在无法解释;子类是父类相加总的内存;
(2)get<0>(t1)是拿出tuple t1的第一个参数;之前7个(可变模板参数)例子之一的.tail().head()比较难用,标准库给出了直接获取参数的函数;
(3)然后是对=,<,<<的重载运算符;
(4)tie是捆绑,是将tie的三个参数给t3;tie(i1,f1,s1)=t3;
(5)右下角,tuple_size<>::value和tuple_element<>::type这种用法,这些是对类型做操作;称为meta programming原编程;

tuple历史—sutpid的做法,没有可变模板参数这种“屠龙刀”

在这里插入图片描述
(1)写到哪里处理多少个,写到15就处理到15;
(2)下图有人继承上图想法,写到了15;
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: C++ Boost库是一个广泛使用的开源库集合,为C++提供了许多功能强大的工具和算法。在Boost库中,有一个名为C++11 Boost库的子模块,它专门为支持C++11标准而设计。 C++11标准引入了许多新的语言特性和库组件,以提高编程效率和代码可靠性。而C++11 Boost库则扩展了标准库,为开发者提供了更多的功能和工具。 C++11 Boost库的中文手册是为了方便中国程序员使用该库而编写的文档。该手册详细介绍了C++11 Boost库中各个模块的功能、用法和示例代码。通过阅读中文手册,程序员可以更清晰地了解每个模块的用途,以及如何正确地使用它们。 在C++11 Boost库中,有许多常用的模块,比如smart_ptr模块,提供了智能指针的功能,用于管理动态内存;thread模块,用于创建和管理线程;filesystem模块,提供了对文件和目录的操作等。在中文手册中,为每个模块都提供了详细的说明和示例,帮助开发者快速上手和运用。 总之,C++11 Boost库中的中文手册为中国的程序员提供了方便和便捷的学习和使用Boost库的途径。通过阅读手册,开发者可以更加深入地了解每个模块的使用方法,从而更高效地开发和调试他们的C++程序。 ### 回答2: Boost库是一个C++的开源库集合,提供了丰富的功能和工具,可以帮助开发者更加高效地进行C++编程。Boost库中文手册是对Boost库的相关文档进行中文翻译的版本。 Boost库包含了众多的模块和组件,如智能指针、函数对象、线程、正则表达式、文件系统等,覆盖了C++开发中常用的领域。通过使用Boost库,开发者可以在项目中集成各种功能强大、稳定可靠的组件,提高代码的复用性和可维护性。 Boost库中文手册对于理解和学习Boost库的使用非常有帮助。手册中提供了详细的说明和示例代码,对于各个组件的功能、用法和特性进行了清晰的介绍,使得开发者可以快速上手和了解各个组件的使用细节。 通过学习Boost库中文手册,开发者可以深入了解各个模块和组件的详细功能和使用方法,使得他们能够更加灵活地利用Boost库来解决实际的开发问题。同时,手册中也提供了相应的参考资料和链接,方便开发者进一步扩展他们的学习和实践。 总之,Boost库中文手册是一个非常宝贵的资源,可以帮助开发者更好地利用Boost库进行C++编程。通过掌握Boost库提供的丰富功能和工具,开发者可以在项目中提高代码的效率和质量,同时也能够更好地满足对于C++编程的需求。 ### 回答3: Boost是一个开源的C++库,提供了很多功能丰富的组件,可以帮助开发者更轻松地进行C++程序开发。Boost库中包含了很多不同的模块,涵盖了各种不同的领域和功能。 11-boost库中文手册是指Boost库的第11章,该章节主要介绍了一些与字符串处理相关的功能组件。在这个章节中,我们可以了解到Boost库提供了一些强大的字符串处理工具,可以用于字符串的分割、合并、格式化、替换等操作。 例如,Boost库中的split函数可以帮助我们将一个字符串按照指定的分隔符进行分割,并将分割后的子字符串存入一个容器中。另外,Boost库还提供了format函数,用于格式化字符串,能够方便地将变量插入到字符串中。 此外,Boost库还提供了一些用于字符串匹配和替换的函数,例如regex_match和regex_replace等。这些函数可以帮助开发者高效地进行字符串模式匹配和替换。 总之,11-boost库中文手册是关于Boost库中字符串处理的部分。通过使用Boost库中提供的强大函数和组件,开发者可以更加方便地进行字符串处理和操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值