Skip to Content
C++程序设计:原理与实践(基础篇)(原书第2版)
book

C++程序设计:原理与实践(基础篇)(原书第2版)

by 本贾尼 斯特劳斯特鲁普
August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
Pearson
Content preview from C++程序设计:原理与实践(基础篇)(原书第2版)

14.2.5 赋值

我们可以用几种不同的方法实现向量的赋值。例如,我们可以仅在涉及的两个向量具有相同数量的元素时才判定赋值是合法的。但是,在13.3.2节中,我们决定向量赋值应具有更为通用的可能也是最为明显的意义:当赋值v1=v2完成后,向量v1应该是向量v2的一个副本。例如:

显然,我们需要拷贝元素,那么空闲空间怎么处理呢?我们是否“拷贝”尾部的“空闲空间”?答案是否定的:新的vector将会获得元素的副本,但我们完全不了解新vector将被如何使用,因此我们无须为尾部的空闲空间操心:

最简单的实现包括如下操作:

·为副本分配存储空间。

·拷贝元素。

·释放原有已分配的空间。

·将sz、elem、space设置为新值。

如下所示:

作为惯例,赋值运算符将返回被赋值对象的引用。符号*this的含义参见12.10节。

上述实现是正确的,但通过观察我们可以发现上述实现包含了大量多余的存储空间分配和释放操作。如果被赋值vector的大小大于赋值对象会如何?如果被赋值vector的大小等于赋值对象会如何?在很多应用中,最后一种情况是十分常见的。在两种情况下,我们都只需将元素拷贝至目标vector中已就绪的新内存空间: ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普
管理Kubernetes

管理Kubernetes

Brendan Burns, Craig Tracey
Python编程入门与实战

Python编程入门与实战

Posts & Telecom Press, Fabrizio Romano

Publisher Resources

ISBN: 9787111562252