标准库类型

string和vector:定义了大小可变的字符串和集合

bitset:提供了一种抽象方法来操作位的集合

一、命名空间的using声明

每个名字都需要一个using声明

二、标准库string类型

#include<string>

using std::string;

1.定义和初始化:

string  s1;//默认构造函数为空字符串;

string s2(s1);//将s2初始化为s1的一个副本;

string s3("valve");//字符串字面值;

sting s4(n,'c');//初始化为n个c

2.读写:

cin>>s;

读取并忽略开头所有空白字符直至遇到空白字符停止

输入 “hello world”  输出的是“hello”

getline();//接收两个参数,一个输入流对象和一个string对象,可以一次性读取一行文本

getline(cin,string);

3.string对象的操作。

s.size();//返回s中字符的个数,其中返回的是string::size_type类型的值,非int类型

s.empty();//s为空,返回true

s1=s2;//将s1所占的内存释放,然后分配足够存储s2的空间,最后在将s2的字符复制带s1上面。

s3=s1+s2;//将s2连接到s1后面。

s[size_type];//取下标中的字符。跟数组一样,但是下表的格式为size_type;最大为s.size()-1个  (string::size_type   i);

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

string s1="World";

string s2="Hello"+","+"s1";//error:第一个+左右都没有string类型对象

字符的处理:cctype

 1 #include<iostream>
 2 #include<string>
 3 using std::string;
 4 using std::cin;
 5 using std::cout;
 6 using std::endl;
 7 int main()
 8 {
 9     string s("Hello  World");
10     int count=0;
11     for(string::size_type i=0;i<s.size();i++)
12     {
13         if(islower(s[i]))
14         {
15             count++;
16             cout<<s[i];
17         }
18         else
19         {
20             s[i]=tolower(s[i]);
21             cout<<s[i];
22         }
23     }
24     cout<<count<<endl;
25 
26     return 0;
27 }

三、标准vector类型  容器

#include<vector>

using std::vector;

1.定义vector:要指定类型和一个变量的列表:

  vector<int>  iver;

  vector<Sales_item>  Sales_vec;

  vector是一种类模板,不是数据类型。

2.初始化:

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

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

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

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

3.v.size();    v.empty();

  size()返回的类型为vector<int>::size_type

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

1     vector<string>  text;
2     string  word;
3     while(cin>>word)
4     {
5         text.push_back(word);
6     }

5.vector的下标操作不能添加元素:
vector<int> ivec;
for (vector<int>::size_type ix = 0; ix != 10; ++ix)
 {
  ivec[ix] = ix;
 }
错误:上述程序中的ivec是空的vector对象,而下标只能用于获取已存在的元素.
正确写法如下:
for (vector<int>::size_type ix = 0; ix != 10; ++ix)
{
 ivec.push_back(ix);//ok!
}

四、迭代器

  迭代器(iterator)是一种数据类型,它可检查容器内元素并遍历元素

  所有的标准库容器都定义了相应的迭代器类型,而只有少数的容器支持下标。

  

vectro<int>::iterator iter;

1.begin和end操作

iter=plus.begin();

 

2.vector迭代器的自增和解引用操作

迭代器类型可以用解引用操作符(*)来访问迭代器所指元素:

 

  *iter和plus[0]相同

   iter++即把容器中的迭代器“向前移动一个位置“

3。实例

1 vector<int>  plus(10);
2     for(vector<int>::iterator  iter=plus.begin();iter!=plus.end();iter++)
3         *iter=0;

4.const_iterator

只能读取,不能改变值。

即自身的值可以变,但是不能改变指向的元素的值

const  iterator

自身的值不能变,可以改变指向元素的值。需要初始化

posted on 2014-05-28 16:55  vincent_SK  阅读(231)  评论(0编辑  收藏  举报