今天关于几个标准库类型的笔记
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。
这几天书看的有点慢,要看快点了。先看完一遍,不懂得再回来好好琢磨。
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。
这几天书看的有点慢,要看快点了。先看完一遍,不懂得再回来好好琢磨。
相关文章推荐
- 关于VOV8订单类型有关PO的几个字段设置说明
- [笔记].关于Nios II的数据类型的一点想法
- 【摄影笔记四】关于图像的几个概念
- 关于考试类型和成绩分析的几个问题
- 关于webapi 返回的类型的笔记
- 关于MYSQL今天新学的几个知识点
- 【学习笔记】汇编:关于几个标志位的注意点
- 关于C++中标准库类型:vector(下)
- c++ primer 笔记汇总 第三章 标准库类型
- Python学习笔记(六)—几个标准类型内建函数
- C++ Primer 第三章 标准库类型 笔记
- C++ 学习笔记 1.0 : 基本语言(变量和基本类型,标准库类型,表达式,语句,函数,标准IO库)
- 【C++ Primer】【学习笔记】【第三章】标准库类型之:vector类型
- 关于STL中几个比较费解的参数类型
- C++学习笔记--标准库类型(vector,iterator,bitset)(三)
- 关于ACCESS数据库报错"标准表达式中数据类型不匹配"
- Android(java)学习笔记98:关于string类型的面试题
- 标准库类型笔记
- java初学笔记之java的几个标准输入
- 【红宝书笔记】一点点关于引用类型