《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
" >
相关文章
|
1月前
|
算法 编译器 C语言
C++语言的“Hello World”
C++语言的“Hello World”
14 0
|
1月前
|
编译器 C++
C++语言中const的用法
C++语言中const的用法
13 0
|
1月前
|
存储 编译器 C++
在C++语言中计算并打印出两个数的求和
在C++语言中计算并打印出两个数的求和
22 0
|
1月前
|
C++
C++语言中流程控制
C++语言中流程控制
14 0
|
1月前
|
程序员 API C语言
在C++语言的标准I/O库
在C++语言的标准I/O库
10 0
|
2天前
|
缓存 编译器 API
NumPy与其他语言(如C/C++)的接口实践
【4月更文挑战第17天】本文介绍了NumPy与C/C++的接口实践,包括Python与C/C++交互基础、NumPy的C API和Cython的使用。通过案例展示了如何将C++函数与NumPy数组结合,强调了内存管理、类型匹配、错误处理和性能优化的最佳实践。掌握这些技能对于跨语言交互和集成至关重要。
|
11天前
|
程序员 C++
C++语言模板学习应用案例
C++模板实现通用代码,以适应多种数据类型。示例展示了一个计算两数之和的模板函数`add&lt;T&gt;`,可处理整数和浮点数。在`main`函数中,展示了对`add`模板的调用,分别计算整数和浮点数的和,输出结果。
10 2
|
24天前
|
存储 算法 C语言
【C/C++ 链表结构】探索链表迭代器:C++实现的深入分析与优化策略
【C/C++ 链表结构】探索链表迭代器:C++实现的深入分析与优化策略
36 0
|
25天前
|
Java API 开发工具
【软件设计师备考 专题 】C、C++、Java、Visual Basic、Visual C++等语言的基础知识和应用(三)
【软件设计师备考 专题 】C、C++、Java、Visual Basic、Visual C++等语言的基础知识和应用
30 0
|
25天前
|
Java 数据处理 数据库
【软件设计师备考 专题 】C、C++、Java、Visual Basic、Visual C++等语言的基础知识和应用(二)
【软件设计师备考 专题 】C、C++、Java、Visual Basic、Visual C++等语言的基础知识和应用
34 0