C++ Primer(标准库类型)

using声明和标准库string类型

1.命名空间的using声明  using namespace::name

    头文件声明 #include<string> 

                         using std::string;

2.读入未知数目的string对象

<span style="font-size:18px;">while (cin>>word)
    cout<<word<<endl;</span>

  读取整行文本
<span style="font-size:18px;">string line;
while(getline(cin,line))
    cout<<line<<endl;</span>
3.string对象的操作
  1. s.empty()             如果s为空串,则返回true,否则返回false  
  2. s.size()              返回s中的字符个数  
  3. s[n]                  返回s中位置为n的字符,位置从0开始计数  
  4. s1+s2                 把s1和s2连接成一个新的字符串,返回新生成的字符串  
  5. s1=s2                 把s1的内容替换成s2的副本  
  6. s1==s2                比较s1和s2的内容,相等返回true,否则返回false  
  7. !=,<,<=,>,>=         保持这些操作符贯有的含义  

注意:
  1.s.size()返回的类型是string::size_type。
  2.比较string实际上是比较string的字符。
  3.string对象相加,可以是string对象与string对象相加,string对象与字符串字面值相加,+操作符的左右操作数必须至少有一个是      string类型的。
  "Hello"+" World"    //error
4.string对象中字符的处理
[cpp]  view plain copy
  1. isalnum(c)            如果c是数字或者字母,则为true  
  2. isalpha(c)            如果c是字母,则为true  
  3. iscntrl(c)            如果c是控制字符,则为true  
  4. isdigit(c)            如果c是数字,则为true  
  5. isgraph(c)            如果c不是空格,但可打印,则为true  
  6. islower(c)            如果c是小写字母,则为true  
  7. isprint(c)            如果c是可以打印的字符,这位true  
  8. ispunct(c)            如果c是标点符号,则为true  
  9. isspace(c)            如果c是空白字符,则为true  
  10. isupper(c)            如果c是大写字母,则为true  
  11. isxdigit(c)           如果c是十六进制数,则为true  
  12. tolower(c)            如果c是大写字母与,则返回其小写字母形式,否则直接返回c  
  13. toupper(c)            如果c是小写字母,则返回其大写字母形式,否则直接返回c  
    大部分函数式测试一个给定的字符是否符合条件,并返回一个int值作为真值。如果测试失败则返回0,否则返回一个无意义的非0值,表示被测试的字符符合条件。
 
    可打印的字符是指那些可以显示表示的字符。空白字符则是空格,制表符,垂直制表符,回车符,换行符和进纸符中的任一种;标点符号就是除了数字,字母或(可打印的)空白字符(如空格)以外的其他可打印字符。
下面的程序是将"Hello World!"字符串变为小写的Demo:
[cpp]  view plain copy
  1. #include <iostream>  
  2. #include <string>  
  3. #include <cctype>  
  4. using namespace std;  
  5. int main()  
  6. {  
  7.     string s1="Hello World!";  
  8.     for(string::size_type i=0;i!=s1.size();i++)  
  9.     {  
  10.         s1[i]=tolower(s1[i]);  
  11.     }  
  12.       
  13.   
  14.     cout<<s1<<endl;  
  15.     return 0;  
  16.   
  17. }  
标准库vector类型

   vector是同一种对象的集合,每个对象都有一个对应的整数索引值。和string对象一样,标准库将负责管理与存储元素相关的类存。引入头文件

  #include<vector>

  using std::vector;

1.vector对象的定义和初始化

[cpp]  view plain copy
  1. vector<T> v1             vector保存类型为T的对象。默认构造函数,v1为空  
  2. vector<T> v2(v1)         v2是v1的一个副本  
  3. vector<T> v3(n,i)        v3包含n个值为i的元素  
  4. vector<T> v4(n)          v4含有值初始化的元素的n个副本  

  如果没有指定元素的初始化式,那么标准库将自行提供一个元素初始值进行值初始化。这个由库生成的初始值将用  来初始化容器中的每个元素,具体的值为何,取决于存储在vector中元素的数据类型。

  如果vector保存内置类型如int,那么标准库将用0值创建元素初始化式

  vector<int> vv(10);      //10个元素,每个被初始化为0

  如果vector保存的是含有构造函数的类类型的元素,标准库将用该类型的默认的构造函数创建元素的初始化式

  vector<string> vvvv(10)      //10个元素,每个被初始化为空字符串

 

  还有第三种情况,元素类型可能是没有定义构造函数的类类型。这种情况下,标准库仍产生一个带初始值的对象,  这个对象的每个成员进行了值初始化。

2.vector对象的操作

[cpp]  view plain copy
  1. v.empty()               如果v为空,则返回true,否则返回false  
  2. v.size()                返回v中元素的个数  
  3. v.push_back()           在v的末尾增加一个值为t的元素  
  4. v[n]                    返回v中位置为n的元素  
  5. v1=v2                   把v1中的元素替换为v2中元素的副本  
  6. v1==v2                  如果v1与v2相等,则返回true  
  7. !=,<,<=,>,>=            保持这些操作符惯有含义  

注意:size()返回相应vector类定义的size_type的值。

           vector::size_type             //error

           vector<int>::size_type    //ok

           push_back()函数将新元素添加到vector最后面。

           下标操作重置零 for(vector<int>::size_type ix=0;ix !=ivec.size();++ix) ivec[ix]=0;#优先使用!=编写循环判断条件

           下表操作进行赋值时不添加新元素,只能用于获取已存在的元素。

3.迭代器简介

  除了使用下标来访问vector对象的元素外,标准库还提供了访问元素的方法:使用迭代器。迭代器是一种检查容器内    元素并且遍历元素的数据类型。

a.容器的iterator类型

  每种容器类型都定义了自己的迭代器类型,如vector:

  vector<int> ::iterator iter;变量名为iter。

b.begin和end操作

  每种容器都定义了一队命名为begin和end的函数,用于返回迭代器。如果容器中有元素的话,由begin返回的元素指  向第一个元素。

  vector<int>::iterator iter=v.begin();

  若v不为空,iter指向v[0]。

  由end返回的迭代器指向最后一个元素的下一个,不存在,若v为空,begin和end返回的相同。

  *iter=0;#解引用操作符(*操作符)来访问迭代器所指向的元素

  iter++即将迭代器向前移动一个位置

  即将v[0]赋值为0,由end返回的不允许进行解操作。

  ==和!=操作符来比较两个迭代器,若两个迭代器指向同一个元素,则它们相等,否则不想等。

  迭代器使用举例:

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

    *iter=0;

 将vector中的元素全部赋值为0;

c.const_iterator

  for(vector<string>::const_iterator iter=text.begin();iter!=text.end();++iter)
  cout<<*iter<<endl;
  这里借助迭代器进行读,不需要写,iter定义为const_iterator类型。不允许用const_iterator进行赋值。*iter=' ' //error

标准库bitset类型

1.初始化方法

bitset<n> b; // n个0 //n必须是字面值或用常量值初始化的const对象

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

bitset<n> b(s); // 字符串

bitset<n> b(s, pos, n); // 字符串pos开始的n个

2.bitset对象上的操作

b.any()                b中是否存在置为1的二进制位?
b.none()              b中不存在置为1的二进制位吗?
b.count()              b中置为1的二进制位的个数
b.size()                b中二进制位的个数,返回值的类型为size_t
b[pos]                  访问b中在pos处的二进制位
b.test[pos]           b中在pos处的二进制位是否为1?
b.set()                  把b中所有的二进制位都置为1
b.set[pos]            把b中在pos处的二进制位置为1
b.reset()               把b中所有的二进制位都置为0
b.reset[pos]         把b中在pos处的二进制位置为0
b.flip()                   把b中所有的二进制位都逐位取反
b.flip[pos]             把b中在pos处的二进制位取反
b.to_ulong            用b中同样的二进制位返回一个unsigned long值
os<<b                   把b中的位集输出到os流</span></li></ul>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值