C++ Primer 第三章 标准库类型
string 对象看成是一个word,这是这个word中可以是ASCII的所有字符。
3.2.2 String 对象的读写
1.读入未知数目的string对象
int main(){
string word;
while(cin>>word)//返回读入的数据流
cout << word << endl;
return 0;
}
2.用getline读取整行文本
int main(){
string line;
while(getline(cin, line))
cout << line << endl;
return 0;
}
3.2.3 string对象的操作
size()操作返回的是string::size_type
size是这个word的长度
上面说了,这个word中的字符可以是ASCII中的任何一个
因此,自然的,函数来判断word中的字符是哪个类型的。
isalnum(c) 字母或数字 | isalpha(c) 字母 | iscntrl(c) 控制字符 。 。 。
这些函数都在cctype中.
3.3 标准库vector类型
vector是一个类模板
3.3.1 vector对象的定义和初始化
vector<T> v1; vector<T> v2(v1); vector<T> v3(n,i); vector<T> v4(n);
如果没有指定元素的初始化式,那么将进行值初始化,
即:vector<int> fvec(10); //10 elements, each initialized to 0
for(vector<int>::size_type ix = 0; ix != ivec.size(); ++ix)
FOR循环用!= 而不用<
3.3.2 vector 对象的操作
v.empty(); v.size(); v.push_back(t); v[n]; v1 = v2; v1 == v2; !=, < <=, >, >=
3.4 迭代器简介
除了使用下标来访问vector对象的元素外,标准库还提供了另一种访问元素的方法,使用迭代器.
迭代器是一种检查容器内元素并遍历元素的数据类型.
标准库为每一种标准容器定义了一种迭代器类型.
vector<int>::iterator iter;
begin操作返回的是第一个元素,end操作返回的是迭代器指向的vector的"末端元素的下一个".
vector<int>::iterator iter = ivec.begin();
如果vector为空,begin返回迭代器与end返回的迭代器相同.
由end操作返回的迭代器并不指向vector中任何实际元素,只起一个哨兵的作用.
迭代器类型的解引用操作返回迭代器当前所指向的元素. 根据上面定义,*iter 就是 ivec[0]。
*iter = 0; 就是将ivec的第一个元素赋值0
如果iter指向第一个元素,则++iter指向第二个元素.
for(vector<int>::size_type ix = 0; ix != ivec.size(); ++ix)
ivec[ix]=0;
for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ++iter)
iter = 0;
const_iterator,只读迭代器.
迭代器的算术操作
iter + n ; iter - n; iter1 - iter2; vector<int>::iterator mid = vi.begin() + vi.size() / 2;
3.5 标准库bitset类型