C++ 标准库类型

命名空间的using声明

 using std::string

在头文件中,必须总是使用完全限定的标准名字,通常头文件中应该只定义确实必要的东西。

标准库string类型

#include<string>

using std::string

string s4(10,'c');

常用的操作:s.empty() 、s.size()返回类型是string::size_type,这是配套类型,通过这些配套类型,库类型的使用就能与机器无关。它的定义与unsigned型具有相同的含义,而且可以保证足够大能够存储任意string对象的长度。任何存储string的size操作结果的变量必须为string::size_type类型。特别重要的是,不要把size的返回值赋给一个int变量。

string对象的索引变量最好也是string::size_type类型。

#include<cctype> 提供isalnum(c)、tolower(c)等对字符的操作。

标准库vector类型

vector不是一个数据类型而是一个类模板,vector<int> ivec(10,1);  vector<Sales_item> Sales_vec

vector对象的重要属性就在于可以在运行时高效的添加元素

vector对象的操作:v.empty()、v.push_back(t) 、v.size()     ivec.size()返回vector<int>::size_type 类型。使用size_type类型时必须指出该类型是在哪里定义的。vector类型总是包含vector的元素类型。

vector类型仅能对已经存在的元素用下标操作符进行索引。通过下标操作进行赋值时,如果此元素已经存在则可以改变此元素,如果此元素不事先存在, 则什么也不做。下标操作不会添加任何元素。

迭代器介绍

除了使用下标来访问vector对象的元素外,标准库还提供了另一种访问元素的方法:使用迭代器。迭代器是一种检查容器内元素并遍历元素的数据类型。标准库为每一个标准容器定义了一种迭代器类型,迭代器对所有的容器都适用。现代C++更倾向于使用迭代器而不是下标操作访问容器元素,即使支持下标操作的vector类型也是这样。

比如vector<int>类型对应的迭代器为 vector<int>::iterator iter;

begin和end操作

每种容器都定义了一对命名为begin和end的函数,用于返回迭代器。如果容器不为空,begin返回的迭代器指向第一个元素,end返回的迭代器指向末端元素的下一个,通常称为超出末端迭代器,表明一个不存在的元素,如果vetor为空,begin返回的迭代器和end返回的迭代器相同。由end操作返回的迭代器并不指向vector中任何实际的元素,相反它只是起到一个哨兵的作用,表示我们已处理完vector中所有元素。如果容器为空,则begin和end返回的迭代器相同,不指向任何元素。

vector<int>::iterator iter=ivec.begin();

iter++;*iter;由于end操作返回的迭代器不指向任何元素,因此不能对它进行解引用或自增操作。

注意:任何改变vector长度的操作都会使已存在的迭代器失效。例如,在调用push_back之后,就不能再依赖指向vector的迭代器的值了。

标准bitset类型

#include<bitset>;using std::bitset;

bitset与vector类似是一种类模板,但是bitset类型对象的区别仅在于长度而不在于类型。在定义bitset时,要明确bitset含有多少位,须在尖挂号内给出它的长度值。bitset<32> bitset;每位都为0.

bitset<n> b(u);b是unsigned long型u的一个副本。

bitset<n> b(s);b是string对象s中含有的位串的副本。

bitset<n> b(s,pos,n);b是s中位置pos开始的n个位的副本.

注意:string对象和bitset对象之间是反向转化的。string对象最右边的字符用来初始化bitset对象的低阶位。比b(“1100”)则bitset中bitset[0]为0 bitset[3]为1.

常见的操作:b.any()、b.cout()、b.test(pos)、b.set(pos)、b.reset()、b.flip(pos)、b.to_ulong() b中同样的二进制位返回一个unsigned long 值。

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值