标准库类型
最重要的标准库类型是 string 和 vector。
bitset,提供了一种抽象方法来操作位的集合。
using机制
using std::cin;
using std::string;
有一种情况下,必须总是使用完全限定的标准库名字:在头文件中。头文件中应该只定义确实必要的东西。
标准库 string 类型
#include <string>
string s1;
string s2(s1);
string s3("value");
string s4(n, 'c');
getline读取整行文本
任何存储 string 的 size 操作结果的变量必须为 string::size_type 类型。特别重要的是,还要把 size 的返回值赋给一个 int 变量。
string str1 = "Hello";
string str2 = str1 + "world";//正确,字符串串联起来
string str3 = "Hello" + "World";//非法,把两个字符串字面值相加,所以非法。
string str4 = "Hello" + str2;//正确
string 类型通过下标操作符([ ])来访问 string 对象中的单个字符。下
标操作符需要取一个 size_type 类型的值,来标明要访问字符的位置。
string str("some string");
for (string::size_type ix = 0; ix != str.size(); ++ix)
cout << str[ix] << endl;
标准库 vector 类型
vector 是一个类模板(class template)
定义 vector 对象要指定类型和一个变量的列表
vector<T> v1;
vector<T> v2(v1);
vector<T> v3(n, i);
vector<t> v4(n);
vector 对象
(以及其他标准库容器对象)
的重要属性就在于可以在运行
时高效地添加元素。
虽然可以对给定元素个数的 vector 对象预先分配内
存,但更有效的方法是先初始化一个空 vector 对象,
然后再动态地增加元素(我们随后将学习如何进行这样
的操作)。
元素类型可能是没有定义任何构造函数的类类型。这种
情况下,标准库仍产生一个带初始值的对象,这个对象的每个成员进行了值初始
化。
vector 对象的操作
empty()
size()
push_back(t)
v[n]
v1 = v2
v1 == v2
!=, <, <=,
>, and >=
成员函数size 返回相应 vector 类定义的 size_type 的值。
C++ 程序员习惯于优先选用 != 而不是 < 来编写循环判断条件。
编译器遇到内联函数时就会直接扩展相应代码,而不是进行实际的
函数调用。像 size 这样的小库函数几乎都定义为内联函数,所以每次
循环过程中调用它的运行时代价是比较小的。
必须是已存在的元素才能用下标操作符进行索引。通过下标操
作进行赋值时,不会添加任何元素。
迭代器iterator简介
迭代器是一种检查容器内元素并遍历元素的数据类型。
标准库为每一种标准容器(包括 vector)定义了一种迭代器类型。迭代器
类型提供了比下标操作更通用化的方法:
所有的标准库容器都定义了相应的迭代
器类型,而只有少数的容器支持下标操作。因为迭代器对所有的容器都适用,现
代 C++ 程序更倾向于使用迭代器而不是下标操作访问容器元素,即使对支持下
标操作的 vector 类型也是这样。
每种容器类型都定义了自己的迭代器类型
vector<int>::iterator iter;
这符语句定义了一个名为 iter 的变量,它的数据类型是 vector<int> 定
义的 iterator 类型。
若一种类型支持一组确定的操作(这些操作可用来遍历容器内的元
素,并访问这些元素的值),我们就称这种类型为迭代器。
各容器类都定义了自己的 iterator 类型,用于访问容器内的元素。
begin返回的迭代器指向第一个元素
end操作返回的迭代器指向 vector 的“末端元素的下一个”。“超出
末端迭代器”(off-the-end iterator)。表明它指向了一个不存在的元素。
如果 vector 为空,begin 返回的迭代器与 end 返回的迭代器相同。
迭代器类型可使用解引用操作符(dereference operator)(*)来访问迭
代器所指向的元素。
用 == 或 != 操作符来比较两个迭
代器,如果两个迭代器对象指向同一个元素,则它们相等,否则就不相等。
分享到:
相关推荐
【C++学习笔记【原创】】是一份作者个人长期积累的C++学习心得与经验总结,旨在为初学者提供一个参考的学习路径。这份笔记涵盖了C++的基础知识、编程技巧以及函数语法等多个方面,帮助读者逐步掌握这门强大的编程...
这份笔记结合了书本内容的摘录和作者个人的理解,其中包含了7章原创内容以及14章从CSDN网站上整理摘抄的部分,这些章节可能有所重叠,但无疑为学习者提供了丰富的资源。 C++模板是C++语言中的一个强大工具,它允许...
了解函数的声明、定义、参数传递以及如何返回值是学习C++的关键步骤。 3. **数组与指针**:数组是一组相同类型的数据集合,而指针是存储内存地址的变量。理解指针的概念,掌握指针运算和动态内存分配(如malloc, ...
### iOS开发教程(大神原创笔记)核心知识点详解 #### 一、Unix相关知识点 **1. Unix指令:** - **pwd**:用于显示当前所在目录的位置。 - **ls**:列出当前目录下的所有文件及文件夹。 - **ls –l**:以详细...
最近开始学习非关系型数据库MongoDB,却在博客园上找不到比较系统的教程,很多资料都要去查阅英文网站,效率比较低下。本人不才,借着自学的机会把心得体会都记录下来,方便感兴趣的童鞋分享讨论。部分资源出自...
4. **算法笔记**:这些代码可能包含了各种算法的实现,如排序算法(冒泡排序、快速排序、归并排序等)、搜索算法(二分查找、深度优先搜索、广度优先搜索等)、动态规划、贪心策略等,这些都是解题的关键。...
它可能是用C++、C#或其他编程语言编写的,并且经过编译后生成的二进制文件。初学者可以通过反编译或使用调试工具来分析代码,理解程序的工作原理。 总的来说,这个压缩包提供了一个完整的、原创的记事本项目的实例...
陌溪的学习笔记 关于我 陌溪 是一个从三本院校一路摸滚翻爬上来的程序员。目前就职于 字节跳动的Data广告部门,是字节跳动全线产品的商业变现研发团队。这两天创建了一个 微信公众号【陌溪教你学编程】,未来将会在...
由于本人水平有限,仓库中的知识点有来自本人原创、读书笔记、书籍、博文等,非原创均已标明出处,如有遗漏,请 向issue 提出。此仓库引用于issue! 只面向初学者用于学习参考~ :bookmark_tabs: 目录 :plus: C/C++ ...
描述:"大神原创的iOS开发教程,内容全面,覆盖OC及iOS开发全部技术细节内容,值得认真学习" 标签:"iOS 移动开发 Objective-C iOS开发 教程" 部分内容: 1. iOS开发基础介绍:开发者拥有丰富的Android、iOS、PHP和...
2. **讲义与笔记**:详尽的数学理论和计算机科学概念讲解,可能包括PPT、PDF文档等形式。 3. **编程作业**:用C++编写的示例程序和练习,帮助学生掌握编程技能。 4. **教程**:逐步指导如何使用C++解决问题,涵盖...
因此我在做三维姿态上位机过程中,又学习了一下SharpGL,当然很感谢官方的源码例程,基本所有的操作都是跟着官方例程来的。在这里分享一下: ———————————————— 版权声明:本文为CSDN博主「川北97...
- 学生按成绩排名,前70名晋级,同时设有奖励机制,包括个人操行成绩加分和实物奖励(如笔记本),并激励班级参与,以提升整体学习氛围。 2. **代码书写阶段**: - 晋级的学生可自由组队参赛,每队1至3人,可以...
- 二等奖:2队,每队奖金200元。 - 三等奖:3队,每队奖金100元。 - **优秀奖**:两组共5队,每队奖励50元。 #### 四、其他注意事项 - **声明**:主办单位对获奖作品享有使用权。 - **时间表**:包括资格赛、...
2. **拓扑排序和最小生成树**:解释了拓扑排序的概念,即在一个有向无环图中找到节点的一个线性排序方式,使得对于每条从节点u到v的边,u在v之前。接着讨论了最小生成树的问题,包括Kruskal算法和Prim算法。 3. **...
它分为多个级别,如初级、中级和高级,涵盖C/C++、Java、Python等编程语言,以及数据结构、算法分析等多个IT领域的知识。试题通常会包括选择题、填空题和编程题,涉及的内容广泛且深入。 "蓝桥杯试题及参考答案欢迎...
中国科学技术大学课程资源本仓库收录中国科学技术大学众多课程资源的笔记,总结,经验等学生原创内容目录索引版权说明本仓库分享资料遵守其创作者之规定,由同学自愿投稿,仅接收学生原创的或获得授权的资源。...
标题 "自己开发的俄罗斯方块" 暗示了这是一个由个人或小团队独立完成的电子游戏项目,其中主要的编程语言可能是C++、Python、Java等,因为这些语言广泛用于游戏开发。俄罗斯方块是一款经典的休闲游戏,其基本原理是...