0

0

第三章C++:字符串string、向量vector和数组

php是最好的语言

php是最好的语言

发布时间:2018-08-06 10:36:00

|

2514人浏览过

|

来源于php中文网

原创

第二章介绍内置类型,本章介绍抽象数据类型库。 

- 其中stringvector是两种最重要的标准库类型,前者支持可变长字符串,后者表示可变长的集合
- 还有一种标准库类型是迭代器,它是string和vector的配套类型,常被用于访问string中的字符和vector中的元素。

第三章  字符串、向量和数组

  • 头文件不应包含using声明。

标准库类型string

#include using std::string
  • 初始化string

    • 直接初始化(direct initialization)

    • 拷贝初始化(copy initialization):使用等号

      立即学习C++免费学习笔记(深入)”;

      string s1;string s2(s1);string s2 = s2;string s3("hiya");string s3 = "hiya";string s4(10, 'c'); //s4的内容是cccccccccc
  • string对象上的操作

    1. cout << s2. cin >> s         //将string对象读入s,遇到空白停止3. getline(is, s)   //从输入流is中读取一行赋给s(换行符被读取了,但被丢弃而没有赋给s),返回is4. s.empty()        //s为空返回true,否则返回false5. s.size()6. s[n]             //返回s中第n个字符的引用,位置n从0计起          
    7. s1 + s2          //返回s1和s2连接后的结果8. s1 = s29. s1 == s210. s1 != s211. <, <=, >, >=
    • 逻辑非运算符(!)

  • string::size_type类型:s.size()的返回值类型,是string类的配套类型。它是一个无符号类型的值,能够存放下任何string对象的大小。

  • 处理string对象中的字符

    • cctype头文件:对单个字符的判断或处理的函数

      isupper(c)      //c是大写字母时为真islower(c)tolower(c)      //如果c是大写字母,则输出对于的小写字母;否则原样输出toupper(c)isalpha(c)      //c是字母时为真isdigit(c)      //c是数字时为真isalnum(c)      //c是字母或数字时为真ispunct(c)      //c是标点符号时为真isspace(c)      //c是空白时为真(即c是空格、横向制表符、纵向制表符、回车符、换行符、进纸符的一种)iscntrl(c)      //c是控制字符时为真isgraph(c)      //c不是空格但可打印时为真isprint(c)      //c是可打印字符时为真(即c是空格或具有可视形式)isxdigit(c)     //十六进制数
    • 使用C++版本的C标准库头文件,形如name.h,C++++中这些文件命名为cname,内容一样,且头文件cname中定义的名字从属于命名空间std。

  • 范围for(range for)语句

for (declaration : expression)
    statement

例如:string str("some string");//每行输出str中的一个字符for(auto c : str)    cout << c <

标准库类型vector

vector是一个类模板(class template)。vector表示对象的集合,其中所有对象的类型都相同。集合中的每个对象都有一个与之对应的索引,索引用于访问对象。vector也常被称为容器(container).

  • 定义和初始化vector对象

vector v1vector v2(v1)vector v2 = v1vector v3(n, val)vector v4(n)vector v5{a,b,c...}vector v5 = {a,b,c...}
vector articles = {"a", "an", "the"};
  • 向vector对象中添加元素

    运行时才知道vector对象中确切的个数:

    string word;vector text;while (cin >> word) {
        text.push_back(word);
    }
    • vector对象能高效增长:vector能在运行时高效快速地添加元素。

    • 如果循环体内包含有向vector对象添加元素的语句,则不能使用++范围for++循环。

    • push_back:把一个值当成vector对象的尾元素“压到(push)”vector对象的“尾端(back)”。

      vector v2;for(int i=0; i != 100; ++1)
          v2.push_back(i);
  • 其他vector操作

v.empty()
v.size()
v.push_back(t)
v[n]        //返回v中第n个位置上元素的引用v1 = v2v1 = {a,b,c...}v1 == v2v1 != v2
<, <=, >, >=

迭代器iterator

一种通用机制:实现使用下标运算符访问string对象的字符或vector对象的元素。

类似指针类型,提供了对对象的间接访问。

  • begin和end成员

    //由编译器决定b、e的类型//b表示v的第一个元素,e表示v尾元素的下一个元素auto b = v.begin(), e = v.end();    //b、e类型相同
    • end成员返回的迭代器常被称作尾后迭代器(off-the-end iterator),或者简称尾迭代器。

    • 如果容器为空,则begin和end返回的都是尾后迭代器。

  • 标准容器迭代器运算符

*iter           返回迭代器iter所指元素的引用iter->men       解引用iter并获取钙元素的名为mem的成员,等价于(*iter).mem++iter--iteriter1 == iter2iter1 != iter2
//将字符串首字母改成大写string s("some string");if (s.begin() != s.end()) {    auto it = s.begin();
    *it = toupper(*it);
}//将迭代器从一个元素移动到另一个元素,把字符串中第一个单词改为大写//注意,使用的是!=,而不是
  • #### 迭代器类型

拥有迭代器的标准库使用iterator和const_iterator来表示迭代器的类型:

vector::iterator it;           //it能读写vector中的元素string::iterator it2;               //it2能读写string对象中的字符vector::const_iterator it3;    //it3只能读元素,不能写元素string::const_iterator it4;         //it4只能读字符,不能写字符

参考:C++Primer第五版

第二章介绍内置类型,本章介绍抽象数据类型库
- 其中stringvector是两种最重要的标准库类型,前者支持可变长字符串,后者表示可变长的集合
- 还有一种标准库类型是迭代器,它是string和vector的配套类型,常被用于访问string中的字符和vector中的元素。

相关文章:

第一章C++:函数返回值、GNU编译器命令

第二章C++:变量和基本类型

相关文章

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
c++和c语言的区别有哪些
c++和c语言的区别有哪些

c++和c语言的区别:1、面向对象编程(OOP)支持不同;2、新增特性不同;3、标准库不同;4、编译方式不同;5、命名空间不同等等。想了解更多c++的相关内容,可以阅读本专题下面的文章。

254

2024.03.14

c++和python学习顺序推荐
c++和python学习顺序推荐

一般建议先学习C++,再学习Python,因为这样可以逐步从较为底层的编程语言向更高级的语言过渡。想了解更多python的相关内容,可以阅读本专题下面的文章。

407

2024.03.14

python和c++学习性价比分析
python和c++学习性价比分析

Python易于学习,广泛应用于Web开发、数据科学和人工智能等领域,但性能较低。C语言性能高,适用于对性能要求较高的场景,如游戏开发和系统编程,但学习曲线陡峭,错误处理复杂。想了解更多python的相关内容,可以阅读本专题下面的文章。

97

2024.03.14

c语言和c++一样吗
c语言和c++一样吗

c语言和c++是两种不同的编程语言,虽然有相似之处,但存在显著差异。c语言专注于过程式编程和系统级开发,以简洁、高效著称。c++作为c语言的超集,引入了面向对象编程,增强了代码组织和管理能力,但学习曲线也更陡峭。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

126

2024.03.14

c语言和c++先学哪个好
c语言和c++先学哪个好

初学者选择学习c语言还是c++语言,需要根据个人学习目标、背景以及编程兴趣和预期应用方向来决定。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

90

2024.03.14

c语言和c++的区别和联系
c语言和c++的区别和联系

c语言和c++是计算机科学领域应用广泛的编程语言。虽然它们有着相似的基础,但它们在语言类型、语法功能和内存管理方面存在着显著差异。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

119

2024.03.14

c++软件中文更改教程
c++软件中文更改教程

对于 ide,可通过打开设置,找到语言设置,选择中文,并保存更改。对于非 ide 应用程序,可查找设置或选项,选择语言设置,更改为中文,并保存更改。想了解更多c++的相关内容,可以阅读本专题下面的文章。

295

2024.03.21

python和java和c++学习性价比分析
python和java和c++学习性价比分析

Python以其易学性、丰富的库和活跃的社区而著称,适合数据科学、人工智能和Web开发。Java以其跨平台性、企业级应用开发和Android应用开发而闻名。C++以其底层控制能力、高效性能和游戏开发而著称。选择哪种语言取决于个人兴趣、职业方向和特定需求。想了解更多python和java和c++的相关内容,可以阅读本专题下面的文章。

331

2024.03.22

桌面文件位置介绍
桌面文件位置介绍

本专题整合了桌面文件相关教程,阅读专题下面的文章了解更多内容。

0

2025.12.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 5.6万人学习

C 教程
C 教程

共75课时 | 3.8万人学习

C++教程
C++教程

共115课时 | 10.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号