迭代器iterator
const_iterator 只能读取容器内的元素,但是不能修改其值。
例如要遍历输出vector<string>类型的text中的元素,因为不需要修改元素值,可以用下面的方法来输出。
// use const_iterator because we won't change elements
for (vector<string>::const_iterator iter = text.begin(); iter != text.end(); ++ iter)
cout<<*iter<<endl; // print each element in text
迭代器的算术操作(iterator arithetic)
iter - n iter + n 对迭代器加上或减去一个整型值,产生一个新的迭代器,其位置在iter所指的元素的前(后)第n个位置。
必须指向vector类的一个元素或者向后添加一个元素。
iter1 - iter2 表达式来计算两个迭代器对象的距离
可以用迭代器算术操作来移动迭代器直接指向某个元素,例如:
vector<int>::iterator mid = vi.begin() + vi.end()/2 直接定位于vector的中间元素
标准库bitset类型
include<bitset>
using std::bitset
定义bitset时要明确它有多少位,在尖括号内规定它的长度值
bitset<32> bitvec; // 32 bits,all zero
bitset对象上的操作
b.any() // b中是否存在置为1的二进制位
b.none() // b中不存在置为1的二进制位吗?
b.count() // b中置为1的二进制位的个数
b.size() // b中二进制位的个数
b.set() // b中所有的二进制位都置为1
b.reset() // b中所有的二进制位都置为0
_________________________________________
术语:abstract data type 抽象数据类型
container 容器
数组
-------------------------------------
不能用一个数组来初始化另一个数组。
数组大小一旦确定不能修改,不能像vector一样push_back向后增加元素
指针 (pointer)
-------------------------------------------
指针保存的事另一个对象的地址
指针变量的定义:
vector<int> *pvec; //指向vector<int>类型的指针
int *pint1, *pint2; // 指向int类型的指针
string *pstring; // 指向string类型的指针
double *dp; //指向double类型的指针