现在的位置: 首页 > 综合 > 正文

标准库类型(vector 、string、 bitset类型)

2013年10月16日 ⁄ 综合 ⁄ 共 2721字 ⁄ 字号 评论关闭

1、命名空间的using声明

    格式:

    1)using namespace::name;         如 using std::cin;

    2)using namespace 命名空间名;    如 using namespace std;


2、string类型

    1)必须包含的头文件

     #include  <string>

     using std::string;

    2)string对象的读写

 

     a)cin读取,读取并忽略开头所有的空白字符;读取字符直至再次遇到空白字符,则读取终止。

           string  str ;

           cin >> str ;//

 

     b)未知数目的string对象读取

         string   word;

         while( cin >> word)

         {

               //process

         }

 

    c)用getline读取整行文本,从输入流中的下一行读取,并保存读取的内容到string对象,但不包括换行符。getline并不忽略行开头的换行符,遇到换行符,则停止读入并返回。(getline 函数返回时,丢弃换行符,换行符将不会存储在string对象中。)

         string line;

         while( getline ( cin, line ) )

         {

               //process,注意line中不包含换行符,若需换行,则要自行添加。

         }

 

    d)两个string对象相加的注意事项

      进行string对象和字符串字面值混合连接操作时,+操作符的左右操作数必须至少有一个是string类型。

 

    e)从string对象中获取字符

     string str( "some string" );

     for( string::size_type ix = 0; ix != str.size() ; ++ix)

          cout<<str[ix]<<endl;

 

    f)从文件中读取字符串(今后补充下,现在写不出代码)

      fstream openfile( "filename" );

      string str_line

      while( getline ( openfile, str_line) )

      {

            

      }

    g)size成员函数来获取string的大小。

     for ( string::size_type index =0; index != s.size() ; ++index )


3、vector类型

    包含的头文件 #include <vector>

                        using std::vector;

    1)vector对象的一个重要属性就在于可以在运行时高效地添加元素。

    2)vector中添加元素的方法:

          使用push_back(),push_front()等成员函数;

         

    3)vector访问其元素

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

          vector<int>  ivec;

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

          {

                 ivec[ix]=0;                       //给元素赋值

                 ivec.push_back(ix);         //添加元素

          }

    b)使用迭代器 (iterator)

         vector<int> ivec;

         for( vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ++ivec )

         {   //ivec.end() 返回的迭代器指向vector的“末端元素的下一个”。

              //通常称为超出末端迭代器,指向一个不存在的元素。

                 *iter=0;           //等价于ivec[ix]=0;

          }

   

    c)const_iterator类型,只能用于读取容器内的元素,但不能改变其值。

   

    4)vector与数组的比较

       a)数组的长度是固定的,而且程序员无法知道一个给定数组的长度。

       b)数组不提供自动添加元素的功能,如果需要更改数组的长度,只能创建一个更大的新数组,然后把原数组的所有元素复制到新数组的空间。

       c)只有当性能测试表明使用vector无法达到必要的速度要求是,才使用数组。


4、标准库bitset类型

     包含的头文件: #include <bitset>

                           using std::bitset;

     1)bitset对象的定义和初始化

       bitset<32> bitvec;   //32bits,all zero。

     2)初始化

       用unsigned值初始化bitset对象,bitset类型长度大于unsigned long值的二进制位时,高位将置0;小于时,则截断处理。

       用string对象初始化bitset对象,string对象直接表示为为模式。从string对象读入位集的顺序是从右到左。

       eg: string str( "1111110000011100010" );

                bitset<32> bitvec5( str, 5, 4 );//从str[5]开始包含4个字符的字串来初始化bitvec5.

     3)bitset对象上的操作

       b.any();             b.none();   b.count();        b.size();                 b.set();             b.to_ulong();        os<<b;

 

       b.count()返回的是size_t类型,size_t类型定义在<cstddef>头文件中。

       b.to_ulong() 用b中同样的二进制位返回一个unsigned long值。

      

 

      

       

 

     

 

抱歉!评论已关闭.