标准库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。
这几天书看的有点慢,要看快点了。先看完一遍,不懂得再回来好好琢磨。