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
long值

os<<b

把b中的位集输出到os流

count操作返回类型是标准库中size_t类型,该类型定义在stddef.h中,是一个与机器相关的unsigned类型,其大小足以保证储存内存中对象的大小。

C++ Primer 笔记 第三章的更多相关文章

  1. Android群英传笔记——第三章:Android控件架构与自定义控件讲解

    Android群英传笔记--第三章:Android控件架构与自定义控件讲解 真的很久没有更新博客了,三四天了吧,搬家干嘛的,心累,事件又很紧,抽时间把第三章大致的看完了,当然,我还是有一点View的基 ...

  2. 《DOM Scripting》学习笔记-——第三章 DOM

    <Dom Scripting>学习笔记 第三章 DOM 本章内容: 1.节点的概念. 2.四个DOM方法:getElementById, getElementsByTagName, get ...

  3. 《Linux内核设计与分析》第六周读书笔记——第三章

    <Linux内核设计与实现>第六周读书笔记——第三章 20135301张忻估算学习时间:共2.5小时读书:2.0代码:0作业:0博客:0.5实际学习时间:共3.0小时读书:2.0代码:0作 ...

  4. spring boot 笔记--第三章

    spring boot 笔记 第三章,使用Spring boot 构建系统: 强烈建议支持依赖管理的构建系统,Maven或Gradle 依赖管理: Spring Boot的每版本都会提供它支持的依赖列 ...

  5. The Road to learn React书籍学习笔记(第三章)

    The Road to learn React书籍学习笔记(第三章) 代码详情 声明周期方法 通过之前的学习,可以了解到ES6 类组件中的生命周期方法 constructor() 和 render() ...

  6. [HeadFrist-HTMLCSS学习笔记]第三章构建模块:Web页面建设

    [HeadFrist-HTMLCSS学习笔记]第三章构建模块:Web页面建设 敲黑板!! <q>元素添加短引用,<blockquote>添加长引用 在段落里添加引用就使用< ...

  7. JVM学习笔记-第三章-垃圾收集器与内存分配策略

    JVM学习笔记-第三章-垃圾收集器与内存分配策略 tips:对于3.4之前的章节可见博客:https://blog.csdn.net/sanhewuyang/article/details/95380 ...

  8. 《SQL CookBook 》笔记-第三章-多表查询

    目录 3.1 叠加两个行集 3.2 合并相关行 3.3 查找两个表中相同的行 3.4 查找只存在于一个表中的数据 3.5 从一个表检索与另一个表不相关的行 3.6 新增连接查询而不影响其他连接查询 3 ...

  9. JavaScript高级编程学习笔记(第三章之一)

    继续记笔记,JavaScript越来越有意思了. 继续... 第三章:JavaScript基础 ECMAScript语法在很大程度上借鉴了C和其它类似于C的语言,比如Java和Perl. 大小写敏感: ...

随机推荐

  1. Hibernate---基础配置之日志信息slf 及搭建日志环境

    slf日志接口, 实现有slf4j nodep, log4j hibernate里我们一般用 log4j,所以删除之前创建的hibernate 包里的 slf4j-nop包, 加入log4j-1.2. ...

  2. python redis list操作

    LPUSH list_name value [value ...] Prepend one or multiple values to a list 从左侧插入值,最早插入的值在最右边 LPUSHX ...

  3. WebRequest调用

    WebRequest支持不同的浏览器对象,可以在底层使用不同的XMLHttpRquest方式调用Web服务. Time.aspx <%@ Page Language="C#" ...

  4. HDU 4008 Parent and son

    树形DP+LCA+思路.这题可真是有点难度......所以准备详细写一下题解. 题意:给一颗无根树,有Q次询问,每次询问指定一个根节点X,然后让你计算Y节点的儿子和子孙中,编号最小的节点是多少. 我们 ...

  5. Spring MVC 关于分页的简单实现

    据本人了解,目前较常用的分页实现办法有两种: 1.每次翻页都修改SQL,向SQL传入相关参数去数据库实时查出该页的数据并显示. 2.查出数据库某张表的全部数据,再通过在业务逻辑里面进行处理去取得某些数 ...

  6. Thinking in scala (6)----高阶函数----返回一个函数

    在Thinking in scala (5)----高阶函数* 里面,我们演示了如何把一个函数作为参数传递给另外一个函数. 在本文里面,我们来演示函数式编程另外一个重要的特性:返回一个函数.首先来看这 ...

  7. js-权威指南学习笔记8

    第8章 函数 1.参数有形参和实参的区别,形参相当于函数中定义的变量,实参是在运行时的函数调用时传入的参数. 2.函数表达式可以包含名称,这在递归时很有用. 3.函数定义表达式特别适合用来定义那些只会 ...

  8. IOS开发-UI学习-UITabBarController的使用

    UITabBarController具体实例如下图 我们最常见的就是微信最下面的四个按钮,通过这四个按钮可以导航到不同的界面. UITabBarController是一个容器,以下的例程中给UITab ...

  9. 企业建站http://www.douco.com/

    http://www.douco.com/ 非常方便的,搭建简单的企业网站

  10. 安卓selector

    定义styles.xml <?xml version="1.0" encoding="utf-8"?> <resources> < ...