您的位置:首页 > 其它

今天关于几个标准库类型的笔记

2012-07-10 18:53 309 查看
标准库string类型

string类型的初始化方式:

1 string s1; 默认构造函数,s1为空串。
2 string s2(s1);
3 string s3("value");
4 string s4(n,'c');

在进行赋值时,如:s1=s2;是先释放s1的内存,再分配合适的内存给s1;

再进行运算时应注意,
string s3=s1+"hello";合法,把一个string对象和一个字符串字面值连接起来。
string "hello"+","+"world";非法,试图将两个字符串相加。
string s5=s1+"world";合法,s1先与”,“结合成新的string对象。
string s6="hello"+","+s2;不合法。

for循环中,条件的次序不同,会产生
不同的结果。
例如
1 for(int i=0;cin>>a&&i<10;i++)
2 for(int i=0;i<10&&cin>>a;i++)
1需要执行11次输入才能判定跳出循环,而2只需要执行10次输入就能跳出循环,说明在执行2中条件判断是只要出现第一个不符合系哦啊见就会跳出循环,不会继续进行后续判定,以此类推,在判定含有&&操作符语句的时候都是这样的。

停止输入ctrl+z;

标准库vector类型

几种初始化vector对象的方式

1 vector<t>v1 保存类型为t,默认构造函数,v1为空
2 vector<t>v2(v1);
3 vector<t>v3(n,i); 包含n个值为i的元素
4 vector<t>v4 (n) ; 含有值初始化元素的n个副本

vector中如果存在vector<string>s,则可用s[i][j]表示s中第i个string元素的第j个字符。

迭代器
begin(),end().
迭代器类型可以使用自增和解引用操作符(*操作符)来访问迭代器所指向的元素,由于end操作返回的迭代器不指向任何元素,因此对不能对它进行解引用或自增操作。

我的理解,迭代器更多的象一个指针,或者说它就是一个指针。用法有
for(vector<int>::interator iter=ivec.begin();iter!=ivec.end;++iter)
{*iter=1;}
语句中定义了迭代器iter,我觉得就是一个vector<int>类型的指针;iter=ivec.begin()就是把ivec的首地址赋值给iter,执行中*iter=1就是对iter所指向的元素进行赋值。

任何改变vector长度的操作都会是已存在的迭代器失效。

标准库bitset类型

bitset与vector类似都是一个类模板。不过bitset类型对象的区别是在其长度而非其类型。
它的初始化方法:
1 bitset<n>b; b有n位,全为零。
2 bitset<n>b(u); b为unsize long型的一个副本
3 bitset<n>n(s); 同上,string。
4 bitset<n>b(s,pos,n) b是s中从位置pos开始的n个单位的副本。
string与bitset之间的转化是反向的。如;
string strval("1100");
bitset<32>bitvec4(strval);
bitvec4的位模式中第2.3位为1,其余项为0。

这几天书看的有点慢,要看快点了。先看完一遍,不懂得再回来好好琢磨。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: