数据类型是程序的基础:它烤酥我们数据的意义以及我们能在这些数据上运行的操作。
C++语言支持广泛的数据类型。它定义了集几种主要的内置类型(如字符、整型、浮点型等),同一时候也为程序员提供了自己定义数据类型的机制。
另外,C++标准库定义了一些更加复杂的数据类型(如可变长字符串和向量等)。
这里我们主要讲下C++中不同于C语言的数据类型。
1 引用
int &reVal=ival; int &reVal//错误,引用必须初始化
2 const限定符
const int val=512; const int i=get.size(); const int ci=i;
2.1 const对象仅在文件内有效
当多个文件出现了同名的const变量时,其值等于它在不同文件里定义的独立变量值。
2.2 const的引用
const int i=1024; const int &val=i;
与普通变量不同的是,常量引用不能被用来改变它所绑定的对象的值。
由于它们都是不可变的。
<span style="font-size:18px;">一般来说引用类型必须与它所绑定的对象的类型一致,可是在初始化常量引用时。同意用随意表达式作为初始值!能够是字面值、非常量的对象、甚至一个表达式。大家一定非常吃惊对不正确,这是为什么呢?</span>
int i=42; const int &r1=i const int &r2=42; const int &r3=r1*2;
double dval=3.14; const int &ri=dval; -------------------------- const int temp=dval;//让双精度浮点数生成一个暂时的整型变量 const int &ri=temp;//让ri绑定这个暂时量
3 标准库类型string
<span style="font-size:18px;"><span style="font-size:18px;">string s1; string s2(s1); string s2=s1; string s3("value"); string s3="value"; string s4(n,'c');//s4的值初始化为n个字符c组成的串</span></span>
<span style="font-size:18px;"><span style="font-size:18px;">os<<s 将写到输出流中。返回os is>>s 从is中读取字符串赋给s getline(is,s) 从is中读取一行赋给s。返回is s.empty() s.size() s[n] s1+s2 s1=s2 s1==s2 s1!=s2</span></span>
4 标准库类型vector对象
vector<T> v1 v1是一个空vector,它的元素类型是T,运行默认初始化 vector<T> v2(v1) vector<T> v2=v1 vector<T> v3(n,val) vector<T> v5{a,b,c...}
向vector中加入元素:
vector<int> v1; for(int i=0;i!=100;1++) vector.push_back(i);
5 迭代器iterator
如begin和end的成员,begin成员负责返回指向第一个元素的迭代器。
auto b=v.begin(),e=v.end();
end成员返回指向容器“尾元素的下一位置”的迭代器。
*iter 返回迭代器iter所指元素的引用 iter->mem 解引用iter并获取该元素名为哦mem的成员
能够看出迭代器事实上和指针非常类似。