C++拾遗(二)——初窥标准库类型
本篇博文的开始,先介绍一道书上看到的智力题:有20瓶药丸,其中19瓶装有1克/粒的药丸,余下一瓶装有1.1克/粒的药丸。有一台称重精准的天平,只是用一次天平的情况下如何找出比较重的那瓶药丸?
好了,直接公布答案。从药瓶#1取出一粒药丸,从药瓶#2取出两粒,从药瓶#3取出三粒,依此类推。如果每粒药丸均重1克,则称得总重量为210克(1 + 2 + … + 20 = 20 * 21 / 2 = 210),“多出来的”重量必定来自每粒多0.1克的药丸。药瓶的编号可由算式(weight - 210 grams) / 0.1 grams得出。因此,若这堆药丸称得重量为211.3克,则药瓶#13装有较重的药丸。
各位是否想出了这样的方法呢(反正我是没有,哈哈)?
接下来就直奔主题,本文着重介绍标准库类型,但不面面俱到,仅以其中两种最常见的类型string和vector为例,初窥标准库,其余内容见后续博客。
标准库String类型
- 一个有用的string IO操作:getline。该函数接受两个参数:一个输入流对象和一个string对象。getline函数从输入流的下一行读取,并保存读取的内容到string中,但不包括换行符。它并不忽略开头的换行符。
- string的size操作返回的是string::size_type类型的值。它是string累类型定义的配套类型(companion type),以达到使库类型的使用与机器无关(machine-independent),它定义为与unsigned类型有相同含义,且能够储存足够大的string对象的长度。注意,必须加上域操作符表明该类型是由string类定义的,即,size()操作返回string::size_type型,而非int型。
- 当进行string对象和字符串字面值混合连接操作时,+操作符的左右操作数必须至少有一个是string类型的。
- string类型通过下标操作符([])来访问string对象中的单个字符,其类型是size_type。
标准库vector类型
- vector不是一种数据类型,而只是一个类模版,可用来定义任意多种数据类型。
- vector的成员函数size()返回相应vector类定义的size_type的值,且必须指出该类型是在哪里定义的。vector类型总是包括vector的元素类型,如:vector<int>::size_type。
- 下标操作不添加元素,下标只能用于获取已存在的元素。向vector添加元素,要使用push_back()。
迭代器简介
- 所有的标准库容器都定义了相应的迭代器类型,只有少数容器支持下标操作,现代C++程序更倾向于使用迭代器。
- 每种容器都定义了begin和end函数用于返回迭代器。begin返回迭代器指向的第一个元素(如果存在的话),end操作返回指向容器的“末端元素的下一个”,即“超出末端迭代器(off-the-end-iterator)”,用作哨兵。
为了形象理解如上所述,举个简单的例子:读取一组整数到vector对象,计算首尾配对的元素和并输出。
vector<int> ivec;
int ival; cout << "Enter numbers: " << endl;
while (cin >> ival)
ivec.push_back(ival); if (ivec.size() == )
{
cout << "NO Elemnts!" << endl;
return -;
} cout << "Sum of each pair of counterpart elements in the vector: " << endl; vector<int>::size_type cnt = ;
vector<int>::iterator first, last;
for (first = ivec.begin, last = ivec.end() - ; first < last; ++first, --last)
{
cout << *first + *last << " ";
++cnt;
if (cnt % == )
cout << endl;
} if (first == last)
cout << endl
<< "The center element is: "
<< ivec[first] << endl;
C++拾遗(二)——初窥标准库类型的更多相关文章
- 标准库类型vector
标准库类型vector表示对象的集合,其中所有对象的类型都相同.集合中的每个对象都有一个与之对应的索引,索引用于访问对象.因为vector“容纳着”其他对象,所以它被称为容器. 要想使用vector, ...
- 谈谈两种标准库类型---string和vector
两种最重要的标准库---string和vector string和vector是两种最重要的标准库类型,string表示可变长的字符序列,vector存放的是某种给定类型对象的可变长序列. 一.标准库 ...
- C++ Primer 学习笔记_6_标准库类型 -- 命名空间using与string类型
标准库类型(一) --命名空间using与string类型 引: 标准库类型是语言组成部分中更主要的哪些数据类型(如:数组.指针)的抽象! C++标准库定义的是高级的抽象数据类型: 1.高级:由 ...
- C++ 标准库类型-String,Vector and Bitset
<C++ Primer 4th>读书摘要 最重要的标准库类型是 string 和 vector,它们分别定义了大小可变的字符串和集合.这些标准库类型是语言组成部分中更基本的那些数据类型(如 ...
- C++ Primer 第三章 标准库类型vector+迭代器iterator 运算
1.vector: 标准库类型vector表示对象的集合,其中所有对象的类型都相同,集合中的每个对象都有一个与之对应的索引,索引用于访问对象.因为vector“容纳着”其他对象,所以它也常被称作容器( ...
- C++ Primer 第三章 标准库类型string运算
1. 标准库类型 string string表示可变长的字符序列,使用string必须首先包含string头文件.如何初始化类的对象是由类本身决定的. int n; string s1;//默认初始化 ...
- C++ Primer笔记1_转义字符_标准库类型string_标准库类型vector
1.转义字符 一般有两种方式: \x后紧跟1个或多个十六进制数字.或\后紧跟1.2.3个八进制数字,当中数字部分是字符相应的数值. #include <iostream> using na ...
- C++标准库类型vector及迭代器iterator简介
Vector是C++标准库类型,称为容器,一个容器中的所有对象必须是同一种类型的.与数组相比,其最大的优点就是动态增长.Vector是一个类模板,并不是数据类型,而vector<int>和 ...
- C++primer第三章标准库类型
除第二章介绍的基本数据类型外,C++ 还定义了一个内容丰富的抽象数据类型标准库. 本章将介绍标准库中的 vector.string 和 bitset 类型. string 类型支持长度可变的字符串 v ...
随机推荐
- Nagios监控Windows的网卡流量
Nagios监控Windows的网卡流量 使用/usr/local/nagios/libexec/中的check_traffic.sh,不但可以监控Linux的网卡流量,也可以监控Windows服务器 ...
- web数据存储
数据的存储必然是任何网站必须经历的事,我们可以将数据存放在不同地方,数据库.文件.内存.程序本身.cookie,session中都可以,但是只要需要持久化保留的数据,那么最终肯定还是落在磁盘之上的,我 ...
- CS231n 2016 通关 第五、六章 Fully-Connected Neural Nets 作业
要求:实现任意层数的NN. 每一层结构包含: 1.前向传播和反向传播函数:2.每一层计算的相关数值 cell 1 依旧是显示的初始设置 # As usual, a bit of setup impor ...
- GitHub---github入门
setup git --- create a repository-----fork a repository -- a pull request (be social)
- [poj2778]DNA Sequence(AC自动机+矩阵快速幂)
题意:有m种DNA序列是有疾病的,问有多少种长度为n的DNA序列不包含任何一种有疾病的DNA序列.(仅含A,T,C,G四个字符) 解题关键:AC自动机,实际上就是一个状态转移图,注意能少取模就少取模, ...
- Java的栈和堆
JVM的内存区域可以被分为:线程栈,堆,静态方法区(实际上还有更多功能的区域,并且这里说的是JVM的内存区域) 线程栈: 注意这个栈和数据结构中的stack有相似之处,但并不是用户态的.准确 ...
- 1-2关键字 & 2-1什么是变量
2-1什么是变量 驼峰第一个字母首字母小写后面字母首字母大写 Pascal命名规范:
- Codeforces 176B【计数DP】
题意: 给你两个串s1,s2和一个K, 有一种操作是在一个串切开然后交换位置, 问s1有多少种方法经过K次这样的操作变成s2: 思路: (从来没接触过计数DP...还是太菜...参考了[大牛blog] ...
- IT兄弟连 JavaWeb教程 Servlet会话跟踪 Cookie的优缺点
Cookie技术存储的数据类型只能是字符串,且不支持中文 ● 保存的数据大小有限,4kb ● 太依赖用户浏览器的设置,用户可以禁用Cookie! ● 数据存储在客户端的文本文件中,不安全,不建议 ...
- [原创]内网渗透专用SSH连接工具sshcmd/sshshell/ssh密码破解以及Kali开启SSH
目录 1.Kali开启SSH 2.SSH连接工具优缺点 3.渗透专用SSH连接工具 4.ssh执行cmd源码 5.批量SSH密码破解 6.相关工具下载 0x001 SSH配置 1.打开文件 etc/s ...