第三章 标准库类型
标准库类型 string、vector 分别定义了大小可变的 字符串 和 集合,迭代器 作为配套类型,标准库类型 bitset,提供了一种抽象方法来操作位的集合;标准库定义了许多高级抽象数据类型,我们在使用时不必关心它们如何表示,只需知道这些 抽象数据类型支持哪些操作 就可以了
3.1 命名空间的using 声明
using 声明,可以在不需要加前缀namspace_name::的情况下访问命名空间中的名字,如,using std::string,之后就不需要加std::前缀直接使用string,要用到的每一个名字都要提供一个using 声明
3.2标准库string类型
string类型支持长度可变的字符串,C++标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作,字符串字面值与标准库string类型不是同一种类型
string对象可以用string对象、字符串字面值、单个字符、const char* 赋值
string 类型的输入操作符 >>,读取并忽略开头所有的空白字符,读取字符直至再次遇到空白字符,读取终止,该操作符返回所读的istream对象,在<string>中的getline函数,istream& getline (istream&& is, string& str); 读取的内容不包括换行符,可以读取空格,遇到换行符停止读入并返回,getline函数返回时丢弃换行符,换行符将不会存储在string对象中
任何存储string的size操作结果的变量必须为string::size_type类型,特别重要的是,不要把size的返回值赋给一个int变量,string::size_type与unsigned型具有相同的含义
3.3标准库 vector类型
vector操作:
3.4迭代器
迭代器是一种 检查容器内元素并遍历元素的 数据类型,每种标准库容器类型都定义了一个名为iterator的成员,只有少数的容器支持下标操作,现代C++程序更倾向于使用迭代器而不是下标操作
每种容器都定义了一对命名为begin和end的函数,用于返回迭代器,end操作返回的迭代器指向vector的末端元素的下一个,如果vector为空,begin返回的迭代器与end返回的迭代器相同,如果容器不为空,begin返回迭代器指向第一个元素
vector 遍历(下标、迭代器):
#include <iostream> #include <vector> using namespace std; int main() { vector<int> v; v.push_back(99); v.push_back(100); v.push_back(88); v[1] = 111; //使用下标遍历 for(vector<int>::size_type ix=0; ix < v.size(); ix++)//size_type 无符号整型的别称 { cout << v[ix] << ","; } cout << endl; //使用迭代器遍历 for( vector<int>::iterator ite = v.begin(); ite !=v.end();ite++) { cout << *ite << ","; } return 0; }