C++ Primer: 实现指向字符串指针vector的输入与内容输出
需积分: 9 113 浏览量
更新于2024-10-16
收藏 491B TXT 举报
在C++ Primer 5.18的习题中,要求我们实现一个程序,它涉及到了C++的基本容器vector以及指针的使用。题目目标是定义一个vector对象,其中每个元素都是指向string类型的指针,然后读取这个vector中的内容,并输出每个string的内容及其对应的长度。
首先,我们从头开始理解这个任务。`#include`预处理器指令引入了所需的库,如`<iostream>`用于输入输出操作,`<string>`用于处理字符串,以及`<vector>`,这是C++标准库中的动态数组容器,用于存储同类型的数据。`using namespace std;`使得我们可以直接使用命名空间std中的成员函数和类型,简化代码。
在`main()`函数中,我们创建了一个名为`vector<string*> p`的变量,这是一个指向string指针的vector。接着,通过`while`循环,从标准输入(`cin`)读取字符串,将其转换为`string`类型,并用`new`关键字动态分配内存来创建一个新的`string`对象,将输入的字符串赋值给这个新对象。然后,我们将这个新指针`pstr`添加到vector `p`的末尾,通过`p.push_back(pstr)`实现。
接下来,我们遍历vector `p`,使用`vector<string*>::iterator iter = p.begin();`获取vector的迭代器,通过`*iter`解引用指针,访问并输出字符串内容(`cout << **iter`),以及通过`(**iter).size()`获取并输出字符串的长度。每次迭代,迭代器`iter`会自动递增,直到达到`p.end()`,即vector的末尾。
在输出完所有字符串及其长度后,为了释放之前动态分配的内存,防止内存泄漏,我们再次遍历vector,通过`delete *iter`删除每个指针指向的`string`对象,然后将`iter`递增。最后,`return 0;`表示程序正常结束。
总结来说,这段代码展示了如何在C++中使用vector容器存储指向string的指针,通过迭代器遍历并操作vector的内容,同时注意内存管理,确保资源的正确释放。这也是对C++基本数据结构和内存管理的一个实践应用。
2096 浏览量
2021-07-08 上传
2017-02-28 上传
118 浏览量
2008-03-24 上传
109 浏览量
2015-04-17 上传
2008-05-18 上传
cxi_fighting
- 粉丝: 9
- 资源: 5
最新资源
- androidcollectibleguide:Android收藏指南应用程序的源代码-Android application source code
- 2004年全国主要人口数据
- leetcode答案-leetcode-cs:leetcode刷题
- WHGradientHelper:iOS渐变,支持——线性渐变,径向渐变,渐变动画,lable字体渐变,lable字体渐变动画
- 基于STM32手写绘图板的设计.zip
- C-:siki教程
- FabriKGenerator:用Kotlin编写的Fabric mod的mod模板生成器
- leetcode答案-leetcode-machine-swift:Xcode中的leetcode解决方案验证
- YourToDo:使用Django制作的To Do应用程序,用户可以在其中添加,编辑和删除任务
- PHP实例开发源码—PHP版 Favicon在线生成工具.zip
- HttpServer.rar
- SmartCurrencyConverter:Android应用程序的源代码-SmartCurrencyConverter-Android application source code
- MDA车库
- GOTOTALPLAY
- leetcode答案-Study4Job:为了准备秋招而做的准备
- hkp_client:用Dart编写的非常基础的HKP密钥服务器客户端