banner

盖茨的私人藏室内。

意大利共藏有三份达·芬奇手稿(此外,意大利境内的梵蒂冈图书馆中还藏有一份《乌尔宾诺手稿》,世称《绘画论》,也是由学生梅尔兹根据达·芬奇的文字和想法汇编而成):第一份是达·芬奇众多手稿中最为著名,也是篇幅最多的《大西洋古抄本》(共包含1119张手稿,米兰盎博罗削图书馆藏),这份手稿采用了特殊的大型稿纸(65 ×44厘米),创作年代为1478—1518年,所述内容十分丰富;第二份是《提福兹欧手稿》(米兰斯福尔扎古堡图书馆藏),包含五十来张稿纸,创作年代为1487-1490年,内容主要为词汇积累、漫画习作和建筑学研究;第三份是《鸟类飞行手稿》(都灵皇家图书馆藏),共包含18存的数据结构,交换比复制更加高效。在实践中,std::swap() 可以为某些类特化。标准容器提供了 swap() 成员函数来交换指向它们的动态成员变量的指针。容器类还提供了特化的 std::swap() ,可以在不调用内存管理器的情况下高效地进行一次交换。用户定义类型也同样可以提供特化版的 std::swap() 。

tips

std::vector 的定义使得当它的骨干数组增长时并不会使用交换来复制它的内容,但是我们可以定义另外一种相似的数据结构来实现这个功能。

交换的问题在于,尽管对于带有需要深复制的动态变量的类而言,交换比复制更加高效,但对于其他类则比较低效。无论如何,“交换”至少对圆满的解决。

4.4 类的组合

现实世界中问题的复杂性有时候是我们许多人都始料不及的,然而较为复杂的问题,往往可以被逐步划分为一系列稍微简单的子问题,经过不断地划分,就能达到可以描述和解决的地步。也就是说,解决复杂问题的有效方法就是将其层层分解为简单问题的组合,首先解决简单问题,较复杂问题也就迎刃而解了。实际上,这种部件组装的生产方式早已广泛应用在工业生产中。例如,电视机的一个重要部件是显像管,但很多电视机厂自己并不生产显像管,而是向专门的显像管生产厂去购买。生产显像管的厂家,会同时向多家电视机厂供货。这样的专业化分工合作,极大地提高了生产效率。目前,要提高软件