Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

c++学习笔记二

引用

引用为对象起了另外一个新的名字,引用类型引用另外一种类型通过&d的形式来定义引用类型,其中d是声明的变量名。
引用并非对象,相反的它只是为一个已经存在的对象所起的另外一个名字。
引用必须被初始化

指针

指针可以实现对其他对象的间接访问,指针本身就是一个对象,允许对指针赋值、拷贝。
数据类型 *b来定义指针,b为指针变量。
指针存放某个对象的地址,用&来获取地址。

auto类型

在编程时常常需要把表达式赋值给常量,这就要求在声明变量时知道数据类型,但要做到这点并不容易,auto类型能让编辑器去替我们分析所属类型。

decltype

其作用是选择并返回方法的返回值数据类型,在此过程中编译器分析并得到数据类型,但并不计算方法。

1
2
//sum的数据类型就是f()的返回值类型
decktype(f()) sum = x;

string

string表示可变长的字符序列,使用时需包含string的头文件,string定义于std中。

初始化 介绍
string s1 默认初始化,s1为空串
string s2(s1) s2为s1的副本
string s3(“value”) s3为value的副本
string s3=”value” 等价与s3(“vaiue”)
string s4(n,’c’) s4初始化为由n个字符’c’组成的串
操作 介绍
os<<s 将s写到输出流os中,并返回os
is>>s 从is中读取字符串赋给s,字符串以空格结束,并返回is
getline(is,s) 从is中读取一整行赋给s,并返回is
s.empty() s为空返回true,否false
s.size() 返回字符串中字符的个数
s.insert(pos,args) 在pos之前插入args指定的字符,pos可以是一个下标或迭代器,接受迭代器的版本返回指向第一个插入字符的迭代器
s.erase(pos,len) 删除从pos位置开始的len个字符,若len被省略则删除pos到s末尾的所有字符。返回一个指向s的引用
s.find(age) 查找s中args第一次出现的位置,返回下标,若未找到则返回npos
s[n] 返回s中第n个字符的引用,位置n从0计起
s1+s2 返回s1与s2拼接后的字符串
s1=s2 用s2的副本代替s1中原来的字符
s1==s2 若相同返回true,否false
s1!=s2 与上条相反
<,<=,>,>= 利用字符在字典中的顺序进行比较,大小写敏感

vector

表对象的集合,其中所有的对象的类型都相同,或被称为容器。

初始化 介绍
vector<T> v1 v1为空vector,为T类型,执行默认初始化
vector<T> v2(v1) v2中包含有v1所有元素的副本
vector<T> v3(n,val) v3中包括n个重复的val
vector<T> v4(n) v4包含了n个重复的执行了初始化的对象
vector<T> v5{a,b,c,…} v5包含了初始值个数的元素
vector<T> v5={a,b,c,…} 同上条
操作 含义
v.empty() v中不含元素反回真,否则为假
v.size() 返回元素个数
v.push_back(t) 向v末端添加一个为t的元素
v[n] 返回v中第n个位上的引用
v1=v2 用v2中元素的拷贝替换v1中的元素
v1={a,b,c,…} 用列表中元素拷贝替换v1中的元素
v1==v2 v1和v2相等为真
v1!=v2 与上条相反
<,<=,<,<= 以字典顺序进行比较

迭代器iter

可以用下标运算符来访问string,还另外有一种更通用的机制也可以实现相同的目的,这就是迭代器。

操作 介绍
*iter 返回迭代器iter所指元素的引用
iter->men 获取该元素名为men的成员
++iter 令iter指向下个元素
–iter 令iter指向上个元素
iter1==iter2 判断两个迭代器是否相等
iter1!=iter2 与上条相反
v.begin() 返回指向v开始元素的迭代器
v.end() 返回指向v结束元素的迭代器
iter1-iter2 返回两个迭代器相差的距离

参考资料

C++primer中文版(第五版) 电子工业出版社。

评论