您的位置:首页 > 编程语言 > C语言/C++

c++ primer 笔记汇总 第三章 标准库类型

2012-11-08 06:58 351 查看
1.抽象数据类型:之所以说这些标准库类型是更高级的,是因为其中反映了更复杂的概念,之所以说是抽象的,是因为我们在使用时不需要关心他们是如何表示的,只需要知道这些抽象数据类型支持哪些操作就可以了。

2.string类型支持长度可变的字符串,vector可用于保存一组指定类型的对象。bitset可以把某个值当作位的集合来处理。

3.“::”是作用域操作符,含义是右操作数的名字可以在左操作数的作用域中找到。如:std:cout;

4.构造函数定义如何初始化该类型的对象。

5.几种初始化string对象的方式:

            1.string s1;                          默认构造函数,s1为空串      

            2.string s2(s1)                     将s2初始化为s1的一个副本

            3.string s3(“value”)               将s3初始化为一个字符串字面值副本

            4.string s4(n,’c’)                  将s4初始化为字符’c’的n个副本

6.string类型的输入操作:1.读取并忽略开头所有的空白字符(如空格,换行符,制表符)2.读取字符直至再次遇到空白字符,读取终止。

7.输入未知数目的string对象:while(cin>>word),中之条件为到达文件尾或遇到无效输入。

8.利用getline读取整行文本,getline并不忽略开头的换行符。格式:getline(cin,line).youyu getline函数返回时丢弃换行符,换行符将不会存储在string对象中。

9.string的集中常见操作:s.empty()                           判断字符串s是否为空,为空则返回true

                                 s.size()                               返回s中的字符的个数

                                 s
                                    返回字符s中位置为n的字符,位置从0开始计数

                                 s1+s2,s1=s2,                      字符串的运算,连接和替换。

                                v1==v2,!=,<,><,<=,>=        字符串的比较

10.判断字符串是否为空的方法:if(s.size()==0)

11.size操作返回的是string::size_type类型的值。任何存储string的size操作结果的变量必须为string:size_type类型,特别重要的是,不要把size的返回值赋给一个int变量(避免溢出)

12.string对象比较操作时区分大小写的,任何一个大写字母都小于任意的小写字母。

13.字符串的赋值过程:s1=s2,首先释放s1所占的相关内存,然后分配给s1足够存放s2副本的内存空间,最后把s2的所有字符赋值到新分配的内存空间。

14.当进行string对象和字符串字面值混合连接操作时,+操作符的左右操作数必须至少有一个是string.如string s1 = “hello” +“,”就非法。

15.可以用下标操作符分别取出string对象中的每个字符,如:for(string:size_type ix=0;ix!=str.size();++ix) cout<<str[ix]

16.可以利用下标操作符来对string中的每个字符进行赋值。

17.在string对象中,利用cctype头文件来测试某个字符是否为特殊字符。

18.vector是同一种类型的对象的集合,每个对象都有一个对应的证书索引值。

19.声明从类模板产生的某种类型的对象,需要提供附加信息,信息的种类取决于模板。以vector为例,必须说明vector保存和中对象的类型,通过将类型放在类模板名称后面的尖括号中来指定类型,如vector<int> ivec;

20.vector不是一种数据类型,而只是一个类模板,可用来定义任意多种数据类型。

21.几种初始化vector对象的方式:

        vector<T> v1;                                 vector保存类型为T的对象,默认构造函数,v1为空。

        vector<T> v2(v1);                           v2是v1的一个副本

        vector<T> v3(n,i);                           v3包含n个值为i的元素

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

22.当把一个vector对象复制到另一个vector对象时,新复制的vector中每一个元素都初始化为原vector中相应元素的副本,但这两个vector对象必须保存同一种元素类型。

23.vector对象的操作:

                      v.empty(),              如果v为空,则返回true

                     v.size(),v.               返回v中元素的个数

                     v.push_back(t)        在v的末尾增加一个值为t的元素

                     v
                        返回v中位置为n的元素

24.向vector中添加元素:v.push_back(word)

25.在vector中不能通过下标操作来添加元素。可赋值为0

26.缓冲区溢出指对不存在的元素进行下标操作的结果。

27.迭代器是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定地址。

28. 每种容器都定义了一对名为begin和end的函数,用于返回迭代器。如果容器中有元素的话,由begin返回的迭代器指向第一个元素,由end操作返回的迭代器指向vector的“末端元素的下一个”,通常称为超过末端迭代器,表明它指向了一个不存在的元素,如果vector为空,begin返回的迭代器与end返回的迭代器其相同。

29.由end操作返回的迭代器并不指向vector中任何实际元素,相反,它只是起一个哨兵的作用,表明我们已经处理完vector中所有元素。

30.迭代器类型可使用解引用操作符来访问迭代器所指向的元素,假设iter指向vetor对象ivec的第一个元素,那么*iter和ivec[0]指向同一元素。

31.要使用bitset类就必须包含相关的头文件,即:#include<bitset> using std::bitset

32.定义bitset时,要明确bitset含有多少位,须在尖括号内给出它的长度值,如bitset<32> bitvec;

33.初始化bitset对象的方法:

           bitset <n> b;                    b有n位,每位都为0

           bitset <n> b(u);                b是unsigned long型u的一个副本

           bitset <n> b(s);                b是string对象s中含有的位串的副本

           bitset <n> b(s,pos,n);        b是s从位置pos开始的n个位的副本

33.当用string对象初始化bitset对象时,string对象直接表示为位模式,从string对象读入位集的顺序是从右往左。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: