《c++语言导学》——2.2 结构

本节书摘来自华章计算机《c++语言导学》一书中的第2章,第2.2节,[美] 本贾尼·斯特劳斯特卢普 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.2 结构

构建新类型的第一步通常是把所需的元素组织成一种数据结构。下面是一个struct的示例:


e459c4ca6169be8c78b48c17cb9477858f7a74cc

这是Vector的第一个版本,其中包含一个int和一个double*。
Vector类型的变量可以通过下述形式进行定义:

7e00bf1b5d6226de36ebc97a83f3e98868ac89a4

仅就v本身而言,它的用处似乎不大,因为v的elem指针并没有指向任何实际的内容。为了让它变得更有用,我们需要令v指向某些元素。例如,我们可以构造一个如下所示的Vector:

823ecfc8c47e4b977ea0be8491135a23448fd6cc

也就是说,v的elem成员被赋予了一个由new运算符生成的指针,而sz成员的值则是元素的个数。Vector&中的符号&指定我们通过非const引用(见1.8节)的方式传递v,这样vector_init()就能修改传入其中的向量了。
new运算符从一块名为自由存储(free store)(又称为动态内存(dynamic memory)或堆(heap))的区域中分配内存。分配在自由存储中的对象独立于它所处的作用域,它会一直“存活”到使用delete运算符(见4.2.2节)销毁它为止。
Vector的一个简单应用如下所示:

66460ebed3000fdb07e3c2b2e898ebd620e06ac5

显然,在优雅程度和灵活性上我们的Vector与标准库vector还有很大差距,尤其是Vector的使用者必须清楚地知道它的所有细节。本章余下部分以及接下来的两章将把Vector当作呈现语言特性和技术的一个示例,一步步地完善它。作为对比,第9章介绍标准库vector,在其中蕴含着很多漂亮的改进。
本书使用vector和其他标准库组件作为示例是为了达到以下两个目的:
  • 展现语言特性和程序设计技术;
  • 帮助读者学会使用这些标准库组件。

不要想着重写vector和string等标准库组件,直接使用它们更为明智。
访问struct的成员有两种方式:一种是通过名字或引用,这时我们使用.(点运算符);另一种是通过指针,这时用到的是->。例如:


<a href=https://yqfile.alicdn.com/f88dffd31f527e933ad3c1d6aaccbf32f401d53a.png
" >
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值