输入(cin)
1 | char a,b; cin>>a>>b; cout<<a<<b<<endl; //给a,b赋值,输出a,b的值,换行 |
注意:
- cin读入数据的效率略低于scanf。
- cin读取数据,以空格、tab或换行作为分隔符。
- 例如(输入):m n
- a与b的值就分别是m和n,m与n之间的空格被直接忽略了。
- 如果使用
scanf("%c%c",&a,&b);
a与b的值就分别是m和空格,中间的空格被成功读取。scanf("%c %c",&a,&b);
格式化输入后,a与b的值即为m和n。
总结:在对输入效率没有过高要求且数据是以空格、tab或换行作为分隔符德情况下,可以使用cin方便操作。
字符串(string)
输入字符串
1 | char str1[10]; |
声明赋值
1 | string s1,s2;//声明空字符串s1,s2 |
字符串连接
1 | string s3=s1+s2;//将s1,s2连接的值赋给s3,s3的值为"hellohello" |
字符串截取
两种形式,substr(pos,n)和substr(pos)。
1 | string s4=s3.substr(0,3);//s4的值为s3下标0开始往后3个字符,即"hel" |
比较操作符
string重载了很多操作符,对字符串比较十分方便。
==,!=,<,>,<=,>=都可以用来做操作符两端字符串的比较,具体比较规则参照字符串的字典序大小。
获取长度
可以用s.length()或者s.size(),没有区别。
1 | s1.length();//5 |
引用(&)
这里主要说一下引用和指针的区别。
- 指针存储的是一块内存的地址,通过地址,可以访问这块内存;
引用则是一个变量的别名,在创建时必须初始化。 - 引用在初始化后不能改变,指针可以修改指向的对象
1 | int *p=&a;//初始化指针p,指向a的地址 |
函数传参:以函数swap(a,b)为例。
指针写法
1
2
3
4
5
6
7void swap(int *a,int *b)
{
int tmp;
tmp = *a;
*a = *b;
*b = tmp;
}引用写法
1
2
3
4
5
6
7void swap(int &a,int &b)
{
int tmp;
tmp = a;
a = b;
b = tmp;
}
常用STL容器
C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈。
vector(动态数组)
头文件#include
1 | //声明一个int型的动态数组 |
set(集合)
头文件#include
在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。
比如先后向集合中插入4 3 3 2 2 1,最后集合中的结果为1 2 3 4。
1 | //声明一个int型的集合 |
map(映射)
头文件#include
1 | //声明一个关键字为string型,值为int型的集合 |
stack(栈)
头文件#include
1 | stack<int> s;//声明一个空栈 |
queue(队列)
头文件#include
1 | queue<int> q;//声明一个空队列 |