C++新手关于标准库学习笔记

c++中定义了一个内容丰富的抽象数据类型标准库,其中最重要的是stringvector,他们分别定义了大小可变的字符串和集合。下面分别详细讲解两者还有bitset的一些基本用法。(新手记录的东西都很琐碎,没办法)

标准库string类型

写:标准输入读取string类型(cin>>s;)忽略开头所有空白字符,读取字符再遇到空白字符读取终止, 返回所读的数据流。

          getlinecin,line)读取整行文本不忽略开头空白字符(包括换行符),换行符终止读入,返回输入流,但是同时丢弃所有换行符,即换行符 不会存储在string对象中。

常用string对象操作:

          s.empty()    //空串返回true,否则false(即返回bool)

          s.size()        //返回s字符个数(字符个数为0s.size()==0等价于s.empty()true

          s[n];            //字符数组

          s1+s2;         //对象相加

          s1=s2;         // 赋值

          v1==v2;    !=,<,<=,>,>=     //比较

string::size_type类型:

         size操作返回的是string::size_type类型的值,个人认为它与int只是存储范围大小的区别,是int的两倍。

         特别注意的是,任何存储stringsize操作结果的变量必须为string::size_type类型,不能将size返回值付给一个int变量。

和字符串字面值连接:

         string  s1="hello";

         对象+字面值(+字面值):   string   s2=s1+"world";(或者s2=s1+"world"+"!";

         将两个字符串字面值相加是非法!!

         string s3="hello"+"world";//error

         string s4="hello"+"world"+s2;//error

string对象获取字符:

下标获取:for(string::size_type ix=0; ix!=s.size(); ix++)

tolower(c)    //如果c是大写字母则返回小写字母形式,否则直接返回c

toupper(c)   //如果c是小写字母则返回大写字母形式,否则直接返回c



标准库vector类型:

vector是同一种类型的对象的集合,vector不是一种数据类型,是一个类模板。

定义方式:(vector<变量类型> 变量)vector  ivec ;         vector ivec ;

vectorvector都是数据类型。

初始化:vector fvec(10);//10个元素,每个都置

vector对象的操作:

         v.empty() ;      

         v.size() ;                 //返回v中元素个数

         v.push_back(c) ;    //v的末尾增加一个值为c的元素

          v[n]; v1=v2;v1==v2; !=,<,<=,>,>=

特别注意的是,和string使用size_type类型类似,不能将size返回值付给一个int变量,vector类型总是包括vector的元素类型。

         vector::size_type        //ok

         vector::size_type      //error

数组是不能扩展大小的,而vector对象可以动态增长,这种动态添加元素的方法是数组不能比拟的

添加元素:

          vector text ;

          text.push_back(word) ;//添加元素wordtext

注意,vector下标操作只能读取、修改已存在的元素,不能向空的对象中添加元素。

          for(vector::size_type ix=0 ; ix!=ivec.size() ; ix++)

          ivec[ix]=0 ;  //将全部元素变为0

         vector ivec ;  //empty vector

          for(vector::size_type ix=0 ; ix!=ivec.size() ; ix++)

         ivec[ix]=ix ;//用下标方式向vector中添加元素这是办不到的!!

除了下标访问vector对象的元素外,还可以用迭代器访问。迭代器(iterator)是一种检查容器内元素并遍历元素的数据类型。

每一种容器都定义了自己的iterator类型:如vector   vector::iterator iter ;//iter是变量

每一种容器都定义了一beginend函数。begin指向容器vector第一个元素,而end指向最后一个元素的下一个元素,即指向一个不存在的元素,作用在于作为遍历容器的哨兵。

For(vector::iterator iter=ivec.begin();iter!=ivec.end();iter++)

*iter=0;//用解引用操作符*来访问迭代器的元素

标准库bitset类型

bitset也是类模板,是二进制位集的处理。

string对象和bitset对象之间是反向转化的,string下标是从0--->sizebitset下标是从size-->0

string  s1("1100");//string对象直接表示位模式

bitset<32> bitvec(s1);// bitset模式中下标23位为1,下标01位为0.

bitset对象的操作:

b.size();    //b中二进制位的个数

b.count();  //b中置为1的二进制位的个数

b.set();  // b中所有二进制位都置为1

b.reset();//b中所有二进制位都置为0

你可能感兴趣的:(c++学习笔记)