C++学习笔记(二)
[TOC]
decltype 类型制定符
用处: 当我们不知道某个变量的类型而需要从表达式推断要定义的类型时,可以使用C++11的第二种类型说明符.,它的实际作用就是返回操作数的数据类型.在此过程中,编译器分析表达式并得到其类型,但实际运算表达式的值
const int ci = 0,&cj = ci; decltype(ci) x = 0; //x 的数据类型是 const int decltype(cj) y = x; //y 的数据类型是 const int& 必须对其进行初始化,否则编译器会报错
decltype与引用
当decltype得到的数据类型是一个引用值,那么它只能作为赋值语句的左值出现,即必须初始化.
特性: 与auto相比,当decltype的表达式加双重括号代表其引用值.
int i = 42; decltyp((i)) j = i; //j的类型是 int& 必须对其初始化
范围for语句
for (declaration : expression) statement
expresstion是一个对象,表示一个序列
declaration负责定义一个变量,用于访问序列中的基本元素
cctype头文件函数
isalnum(c) // c是字母或者数组时为真 isalpha(c) //c是字母 iscntrl(c) //c是控制字符 isxdigit(c) //c是16进制数字 isdigit(c) //c是数字 isspace(c) //c是空白(空格,制表符,回车符,换行符,进纸符(\f,\x0c,\cL )) isgraph(c) //c不是空格但可以打印 isupper(c) islower(c)
数组
使用数组下标时,通常使用size_t类型,即与机器相关足够大的无符号整形,存在<cstddef>中</cstddef>
指针也是迭代器
例如: int a[10]; //定义数组 int *s = &a[0]; //定义头指针 int *t = &a[10]; //定义尾后指针 //由于此用法极易出错,c++11增加标准库函数 begin(),end() int *beg = begin(a); int *last = end(a);
string 的初始化
string允许使用空字符结束的字符数组来初始化string对象
string s("hello world");
string 专门提供了一个名为c_str的成员函数,即返回c风格的字符串,即以空字符结束的字符数组的指针
const char *str = s.c_str(); //将string转化为字符数组的指针类型
vector的数组初始化方法
int int_arr[] = {1,2,3,4,5,6}; vector<int> ivec(begin(int_arr),end(int_arr)); //使用数组首指针与尾后指针初始化 vector<int> subVec(int_arr+1,int_arr+4);