string的初始化
初始化方式 | 解释 |
---|---|
string s1 | 默认初始化,s1为一空串 |
string s2(s1) | s2是s1的一个副本,直接初始化 |
string s2=s1 | 等价s2(s1),拷贝初始化 |
string s3(“value”) | s3是字面值”value”的副本,不包括最后的空字符 |
string s3 = “value” | 等价于s3(“value”) |
string s4(n,’c’) | 用连续n个字符初始化字符串s4,直接初始化 |
string 类对象上的操作
操作 | 解释 |
---|---|
os<<s | 将s写到输出流os当中,返回os |
is>>s | 从is中读取字符串赋给s,字符串以空白分隔,返回is |
getlin(is,s) | 从is中读取一行赋给S,返回is |
s.empty() | s为空返回true,否则返回false |
s.size() | 返回s中字符的个数,返回的类型为string::size_type |
s[n] | 返回s中第n个字符,位置n从0计起 |
s1+s2 | 返回s1和s2连接后的结果 |
s1=s2 | 用s2的副本代替si中原来的字符 |
s1!=s2 | 判断s1和s2中所含的字符是否一样 |
s1==s2 | 同上 |
s1(<,<=,>,>=) | 字典序比较 |
vector<的初始化>
方式 | 解释 |
---|---|
vector v1 | v1为空,默认初始化 |
vector v2(v1) | v2包含v1的所有元素 |
vectorv2 = v1 | 等价于vectorv2(v1) |
vectorv3(n,val) | 初始化了含n个val的vector |
vectorv4(n) | vector大小为n,可存n个T |
vectorv5{a,b,c,…} | 按a,b,c,…初始化,并且值也确定 |
vectorv6 = {a,b,c,…} | 等价于vector{a,b,c,…} |
vectorv7(begin(arr),end(arr)) | 用数组arr初始化v7 |
vector上的操作
操作 | 解释 |
---|---|
v.push_back(T) | 向v的末尾添加元素T |
v.size() | v中所含元素个数 |
v.empty() | v是否为空 |
支持类似数组操作按秩访问 |
stack的初始化
方式 | 解释 |
---|---|
stack stack1; | 初始化一个栈,默认为双端队列 |
stack<int,vector>stack2; | 变成向量 |
stack<int,list> stack3 | 链表 |
stack上常用操作
返回值 操作 | 解释 |
---|---|
bool empty() | 判断栈是否为空 |
void pop() | 弹出栈顶元素, |
void push(const T& el) | 将元素el压入栈顶,constT&表示类型 |
size_type size() | 栈中元素数目 |
T& top() | 栈顶元素 |
数组的初始化
int arr[10] | 含有10个整数的数组 |
---|---|
int *arr[10] | 含有10个整型指针的数组 |
int arr[3]={1,2,3} | 显式初始化 |
为已存在的运算符赋予另一层含义
当一个对象被用作右值时候,使用是对象的值(内容),当用作左值的时候,用的是对象的身份(在内存中的地址)。
& | 两个位置上均为1结果才是1 |
---|---|
| | 两个位置上至少有一个为1结果才是1 |
^ | 两个位置是上有且只有一个为1结果才是1 |
try{
program code;
}catch(exception-declaration){
handle exception;
}catch(exception-declaration){
handle exception;
}//基本语法