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

标准库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。


这几天书看的有点慢,要看快点了。先看完一遍,不懂得再回来好好琢磨。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值