C++ Primer 笔记 第三章
C++ Primer
第三章 标准库类型
3.1using声明
例:
using namespace atd;
using std::cin;
3.2string类型
初始化方式
|
string s1 |
默认构造函数,s1为空串 |
|
string s2(s1) |
将s2初始化为s1的一个副本 |
|
string s3(“value”) |
将s3初始化为一个字符串的副本 |
|
string s4(n, 'c') |
将s4初始化为字符'c'的n个副本 |
getline读取整行文本
getline接受两个参数:一个是输入流对象和一个string对象。不保存换行符。
例:while(getline(cin, str));
3.2.3string对象的操作
|
s.empty() |
判断是否为空,空则返回true,否则返回false |
|
s.size() |
返回s中字符个数,返回string::type_size类型,不要赋值给int(signed)类型变量 |
|
s[n] |
返回s中下标为n的字符,从0开始计数 |
|
s1 + s2 |
返回新连接的字符串 |
|
s1 = s2 |
把s1的内容替换为s2的副本 |
|
v1 == v2 |
比较,返回值为布尔类型 |
|
!=, <, <=, >, >= |
保持惯有特性 |
3.2.4对象中字符的处理
头文件:cctype
|
isalnum(c) |
如果c是字母或数字,返回true |
|
isalpha(c) |
如果c是字母,返回true |
|
iscntrl(c) |
如果c是控制字符,返回true |
|
isdigit(c) |
如果c是数字,返回true |
|
isgraph(c) |
如果c不是空格但可打印,返回true |
|
islower(c) |
如果c是小写字母,返回true |
|
isprint(c) |
如果c是可打印字符,返回true |
|
ispunct(c) |
如果c是标点符号,返回true |
|
isspace(c) |
如果c是空白字符,返回true |
|
isupper(c) |
如果c是大写字母,返回true |
|
isxdigit(c) |
如果c是十六进制数,返回true |
|
tolower(c) |
如果c是大写字母,则返回相应小写字母,否则返回本身 |
|
toupper(c) |
如果c是小写字母,则返回相应大写字母,否则返回本身 |
可打印字符:可显示表示的字符;
空白字符:空格,制表符,垂直制表符,回车符,换行符和进纸符中的任意一种;
标点符号:除了数字,字母,空白字符以外的可打印的字符。
3.3 vector
头文件:<vector>
定义:vector<elemtype> vname;
vector不是一种数据类型,而只是一个类模板,可用来定义任意多种数据类型,vector类型的每一种都指定了保存元素的类型。
3.3.1 vector对象的定义和初始化
|
vector<T> v1; |
默认构造函数,v1为空 |
|
vector<T> v2(v1); |
v2是v1的一个副本 |
|
vector<T> v3(n, i); |
v3包含n个值为i的元素 |
|
vecor<T> v4(n); |
v4含有值初始化的元素的n个副本 |
c++并非预先分配合适的空间,而是先初始化一个空vector对象,然后动态地增加元素。
3.3.2 vector对象的操作
|
v.empty() |
判断是否为空,空则返回true,否则返回false |
|
v.size() |
返回v中字符个数,返回vector<T>::type_size类型,不要赋值给int(signed)类型变量 |
|
v[n] |
返回v中下标为n的字符,从0开始计数 |
|
v.push_back(t) |
在v的结尾添加一个值为t的元素 |
|
v1 = v2 |
把v1的内容替换为v2的副本 |
|
v1 == v2 |
比较,返回值为布尔类型 |
|
!=, <, <=, >, >= |
保持惯有特性 |
3.4 迭代器
迭代器是一种检查容器内元素并遍历元素的数据类型。
标准库为每一种标准容器定义了一种迭代器类型,即含有名为iterator的成员。
每个容器都定义了一对名为begin和end的函数,用于返回迭代器。
每种容器还定义了一种名为const_iterator的类型,该类型只能用于读取容器内元素的值,但const_iterator自身可变,它和const的iterator对象不同。
迭代器的算数操作:
iter + n (n为整数)
iter1 – iter2
任何改变vector长度的操作都会使已存在的迭代器失效。
3.5标准库bitset类型
头文件及using声明:
<bitset>
using std::bitset;
定义:
bitset<32> bitvec; //32bits, all zero
|
bitset<n> b |
b有n位,每位都为0 |
|
bitset<n> b(u) |
b是unsigned ling型u的一个副本 |
|
bitset<n> b(s) |
b是string对象s中含有的位串的副本 |
|
bitset<n> b(s, pos, n) |
b是s中从位置pos开始的n个位的副本 |
从string对象读入位集的顺序是从右向左。
3.5.2 bitset对象上的操作
|
b.any() |
是否存在1 |
|
b.none() |
是否不存在1 |
|
b.count() |
1的个数 |
|
b.size() |
b中二进制的位数 |
|
b[pos] |
返回b中pos位置的二进制数 |
|
b.test(pos) |
pos处是否为1 |
|
b.set() |
所有设置为1 |
|
b.set(pos) |
|
|
b.reset() |
所有设置为0 |
|
b.reset(pos) |
|
|
b.flip() |
所有位取反 |
|
b.flip(pos) |
|
|
b.to_ulong() |
返回该二进制表示的unsigned |
|
os<<b |
把b中的位集输出到os流 |
count操作返回类型是标准库中size_t类型,该类型定义在stddef.h中,是一个与机器相关的unsigned类型,其大小足以保证储存内存中对象的大小。
C++ Primer 笔记 第三章的更多相关文章
- Android群英传笔记——第三章:Android控件架构与自定义控件讲解
Android群英传笔记--第三章:Android控件架构与自定义控件讲解 真的很久没有更新博客了,三四天了吧,搬家干嘛的,心累,事件又很紧,抽时间把第三章大致的看完了,当然,我还是有一点View的基 ...
- 《DOM Scripting》学习笔记-——第三章 DOM
<Dom Scripting>学习笔记 第三章 DOM 本章内容: 1.节点的概念. 2.四个DOM方法:getElementById, getElementsByTagName, get ...
- 《Linux内核设计与分析》第六周读书笔记——第三章
<Linux内核设计与实现>第六周读书笔记——第三章 20135301张忻估算学习时间:共2.5小时读书:2.0代码:0作业:0博客:0.5实际学习时间:共3.0小时读书:2.0代码:0作 ...
- spring boot 笔记--第三章
spring boot 笔记 第三章,使用Spring boot 构建系统: 强烈建议支持依赖管理的构建系统,Maven或Gradle 依赖管理: Spring Boot的每版本都会提供它支持的依赖列 ...
- The Road to learn React书籍学习笔记(第三章)
The Road to learn React书籍学习笔记(第三章) 代码详情 声明周期方法 通过之前的学习,可以了解到ES6 类组件中的生命周期方法 constructor() 和 render() ...
- [HeadFrist-HTMLCSS学习笔记]第三章构建模块:Web页面建设
[HeadFrist-HTMLCSS学习笔记]第三章构建模块:Web页面建设 敲黑板!! <q>元素添加短引用,<blockquote>添加长引用 在段落里添加引用就使用< ...
- JVM学习笔记-第三章-垃圾收集器与内存分配策略
JVM学习笔记-第三章-垃圾收集器与内存分配策略 tips:对于3.4之前的章节可见博客:https://blog.csdn.net/sanhewuyang/article/details/95380 ...
- 《SQL CookBook 》笔记-第三章-多表查询
目录 3.1 叠加两个行集 3.2 合并相关行 3.3 查找两个表中相同的行 3.4 查找只存在于一个表中的数据 3.5 从一个表检索与另一个表不相关的行 3.6 新增连接查询而不影响其他连接查询 3 ...
- JavaScript高级编程学习笔记(第三章之一)
继续记笔记,JavaScript越来越有意思了. 继续... 第三章:JavaScript基础 ECMAScript语法在很大程度上借鉴了C和其它类似于C的语言,比如Java和Perl. 大小写敏感: ...
随机推荐
- 2014非专业知识学习---be smart
非专业部分--构建人生 以书籍和网易公开课为主 (1)理财&投资 基金投资相关,好的书籍? (2)哲学总览 <公正>这个看了大半,需要总结归纳. (必选) 同时结合哲学史,归纳西 ...
- kafka 集群部署 多机多broker模式
kafka 集群部署 多机多broker模式 环境IP : 172.16.1.35 zookeeper kafka 172.16.1.36 zookeeper kafka 172.16 ...
- Arch Linux 安装过程
在VM中装了Arch,由于过程较为曲折,现写博客一篇聊以慰藉. 1.新建虚拟机,将下载好的archlinux-2016.03.01-dual.iso挂到虚拟机设置的CD/DVD 2.进入Arch安装界 ...
- iOS开源库--最全的整理
youtube下载神器:https://github.com/rg3/youtube-dl我擦咧 vim插件:https://github.com/Valloric/YouCompleteMevim插 ...
- chart.js在html中画曲线图
http://www.bootcss.com/p/chart.js/docs/ http://www.chartjs.org/docs/ 中有详细讲解 一.简介 Chart.js是一个基于HTML ...
- 自己实现的sax XML解析,可能会有误
package com.agatha.bean; public class OrderInfoBean { private String order_id; private String room_t ...
- python mysql 2014 Commands out of sync; you can't run this command now
这个问题出现再 mysql和c 的api. 简单的解决方法是不使用api直接把整个连接和命令传过去. 例如,cmd = 'mysql -h 192.168.32.210 -P 3316 -u bfd ...
- linux命令学习-3-sysctl
sysctl 内核变量配置 Usage: sysctl [options] [variable[=value] ...] NAME sysctl - configure kernel parame ...
- Tsinsen-A1491 家族【并查集】
问题描述 阿狸和桃子养了n个小阿狸, 小阿狸们每天都在一起玩的很开心. 作为工程师的阿狸在对小阿狸们之间的关系进行研究以后发现了小阿狸的人际关系由某种神奇的相互作用决定, 阿狸称之为“键”. 每个键有 ...
- android 通过wifi 热点实现手机摄像头数据共享(转)
原文地址:http://blog.csdn.net/sinat_35845281/article/details/52674946 最近想搞一个新奇的玩意儿~~~ 最近一直在在学习通过两个Androi ...