[c++primer][03]标准库类型

3.1 using声明

using namspace::name;

一旦使用了using声明,就可以直接引用名字,不需要再引用该名字的命名空间

3.2 string类型

读入未知数目的string对象

while(cin >> word){
        cout << word << endl;
}

用getline读取整行文本,默认遇到换行符结束( 不存储换行符 )

while(getline(cin, line){
    cout << line << endl;
}

string对象的赋值

从概念上讲,赋值操作先把左操作数占用的空间释放,再分配足够存放右操作数的内存空间,最后将右操作数中所有字符复制到新分配的空间。

下标操作

string类型可以通过[ ]访问单个字符,下标操作可用作左值,下标值(索引)应为string::size_type类型

3.3 vector类型

vector是一个类模板(class template),可用来定义任意多种数据类型。vector不是数据类型,vector<int>是数据类型。

初始化

vector<T> v(n);  //v含有值初始化的元素的n个副本

什么是值初始化?

如果没有指定元素的初始化式,标准库将自行提供一个元素初始值进行值初始化,这个初始值将用来初始化容器中的每个元素

根据vector存放的数据类型分三种情况:1)内置类型,初始值为0;2)含构造函数的类类型,用默认构造函数初始化;3)无构造函数,标准库仍然产生一个带初始值的对象。

必须是已经存在的元素才能用下标操作符进行索引。通过下标操作进行赋值时,不会添加任何元素。

3.4 迭代器简介

现代C++更倾向于使用迭代器而不是下标操作访问容器元素。

迭代器的操作

由end操作返回的迭代器指向vector的“末端元素的下一个”,称为超出末端迭代器。迭代器支持自增或解引用,但end返回的迭代器不指向任何元素,不能进行上述操作。

用==或!=操作符来比较迭代器,如果两个迭代器指向同一对象,则它们相等,否则不相等。

const_iterator

算术操作(vector迭代器)

iter + n;

iter - n;

iter1 – iter2; //计算迭代器对象的距离,该距离是名为different_type的signed类型

注意:任何改变vector长度的操作都会使已存在的迭代器失效。

3.5 bitset类型

bitset<32> bitvec;//定义了一个含有32位的bitset对象

用string对象初始化bitset对象时,从string对象读入位集的顺序是从右向左(string对象的最右边字符用来初始化bitset对象低阶位)

 

size_type是string类型和vector类型定义的与机器无关的unsigned 类型,用于保存任意string对象或vector对象的长度。

different_type是由vector类型定义的signed整型,用于存储任意两个迭代器间的距离。

size_t是与机器相关的unsigned类型,其大小足以保证存储内存中对象的大小;

ssize_t是与机器相关的signed类型。

Unix编程之size_t、ssize_t

 

posted @ 2015-09-11 02:09  treeland  阅读(151)  评论(0编辑  收藏  举报