您的位置:首页 > 编程语言 > C语言/C++

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

2012-03-31 00:35 363 查看
c++中定义了一个内容丰富的抽象数据类型标准库,其中最重要的是string和vector,他们分别定义了大小可变的字符串和集合。下面分别详细讲解两者还有bitset的一些基本用法。(新手记录的东西都很琐碎,没办法)
标准库string类型
写:标准输入读取string类型(cin>>s;)忽略开头所有空白字符,读取字符再遇到空白字符读取终止, 返回所读的数据流。

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

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


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


s
; //字符数组


s1+s2; //对象相加


s1=s2; // 赋值

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

string::size_type类型:

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


特别注意的是,任何存储string的size操作结果的变量必须为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<int> ivec ;
vector<string> ivec ;

vector<int>和vector<string>都是数据类型。

初始化:vector<int> fvec(10);//10个元素,每个都置
vector对象的操作:

v.empty() ;


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


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


v
; v1=v2;v1==v2; !=,<,<=,>,>=

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

vector<int>::size_type //ok


vector::size_type //error

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

vector<string> text ;


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

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

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


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


vector<int> ivec ; //empty vector


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


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

除了下标访问vector对象的元素外,还可以用迭代器访问。迭代器(iterator)是一种检查容器内元素并遍历元素的数据类型。
每一种容器都定义了自己的iterator类型:如vector:
vector<int>::iterator iter ;//iter是变量

每一种容器都定义了一对begin和end函数。begin指向容器vector第一个元素,而end指向最后一个元素的下一个元素,即指向一个不存在的元素,作用在于作为遍历容器的哨兵。
For(vector<int>::iterator iter=ivec.begin();iter!=ivec.end();iter++)
*iter=0;//用解引用操作符*来访问迭代器的元素
标准库bitset类型
bitset也是类模板,是二进制位集的处理。
string对象和bitset对象之间是反向转化的,string下标是从0--->size;bitset下标是从size-->0。
string
s1("1100");//string对象直接表示位模式

bitset<32> bitvec(s1);// bitset模式中下标2、3位为1,下标0、1位为0.
bitset对象的操作:
b.size();
//b中二进制位的个数

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

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

b.reset();//b中所有二进制位都置为0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: