标准库类型
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) 编辑 收藏 举报