一、标准库string类型
1.1、string对象的初始化
string s1;
string s2(s1);
string s3("value");
string s4(n, ' c') ;
【注】string对象读写的特点:
- 读取并忽略开头所有的空白字符
- 读取字符直至再次遇到空白字符,读取终止
int main()
{
string s;
cin >> s;
cout << s;
return 0;
}
比如,上述程序中输入“ hello world ”,则屏幕上输出的为“hello”,不包含任何空格,将代码稍作修改,则可以这样:
string s1,s2;
cin >> s1 >> s2;
cout << s1 <<s2;
这样就会输出"helloworld"
1.2string对象的操作
string对象的操作 | |
---|---|
s.empty() | 如果s为空串,返会true,否则返回false |
s.size() | 但会s中字符串的个数 |
s[n] | 返回s位置为n的字符,位置从0开始 |
s1+s2 | 把s1和s2连接成新的字符串 |
s1 = s2 | 将s2的内容赋给s1 |
v1 == v2 | 比较v1与v2的内容,相等返回true,否则返回false |
【注】:在进行string对象相加时,+操作符的左右操作数必须至少有一个时string类型的
。
二、vector标准库
vector对象的重要属性就是能够动态增长
2.1初始化
vector ivec;
2.2vector操作
vector操作 | |
---|---|
v.empty | |
v.size() | |
v.push_back(t) | 在v的末尾增加一个值为t的元素 |
v[n] | |
v1 = v2 | |
v1 == v2 | 比较 |
【注1】:vector下标操作不添加元素
vector<int> iv;
for(int i=1 ; i < 10 ;i++)
iv[i] = i;
上述程序执行完。iv是空的vector对象,通过下标只能用于获取已经存在的元素,若像插入,可使用push_back(i)
【注2】:只能对已经存在的元素进行下标操作
三、迭代器
迭代器的目的是为了遍历,在某种程度上相当于一个指针
3.1 容器的iterator类型
vector定义的自己迭代器类型:
vector<int>::iterator iter;
这条语句定义了一个iter的变量,它的数据类型是有vector定义的iteration类型。
3.2 begin和end操作
我们通过一个简单的程序来理解,程序:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> iv;
for(int m = 3 ; m < 7 ; m++ )
iv.push_back(m);
for(vector<int>::iterator iter = iv.begin();iter != iv.end();iter++)
cout<<*iter<<endl;
return 0;
}
运行结果:
很显然,begin,end在此处就是下标的作用,然后使用*iter
来访问迭代器所指向的元素。
3.3 vector迭代器的自增与解引用运算
迭代器可使用解引用(*操作符)来访问迭代器所指向的元素:
*iter = 0;
迭代器的自增:在int类型中,就是把int的值"加1",而对迭代器对象就是把容器中的迭代器”向前移动一个位置“。所以,如果iter指向第一个元素,那么iter++指向第二元素。
迭代器的算术操作:
- iter + n
- iter - n 生成一个新的迭代器,其位置在iter所指向元素之前(加)或之后(减)n个元素的位置
- iter1 - iter2 计算两个迭代器对象的距离