template<typename
T,std::size_tN>
//模板参数而非构造函数
classarray
{
public:
staticconst
size_type
static_size =N;
iteratorbegin();//rbegin()
iteratorend();//rend()
迭代器支持
referenceoperator[](size_type);//访问某个元素值,不抛
referenceat(size_type);//i<N否则抛出异常
referencefront();//N>0时返回第一个元素
referenceback();//返回最后一个元素
//
capacity
size_type
size();//返回N
bool
empty();//返回N==0
size_type
max_size();//返回N
const T*data()
const;//以C数组形式返回内部数组指针static
T*
c_array();//和data()同,只是动态的
voidassign(constT&);//将所有元素赋值为value
// public data members
T
elems[N];
};
…..此外还array重载了>、<、
==、!等比较操作符
注意:
dynamic_bitset
的大小是在运行期其对象的构造过程中指定的,并且动态可变。
classdynamic_bitset
{
public:
explicit dynamic_bitset();//构造
dynamic_bitset(const
dynamic_bitset&b);//拷贝构造
//thisbitset
的内容与bitset b
的内容被互相交换。
void swap(dynamic_bitset&b);
//将this二进制位数目变为num_bits。如果num_bits>
size(),那么区间[0,size()]中保持不变,[size(),num_bits]
中全部为value。如果num_bits<
size(),[0,num_bits)中保持不变(而剩余的二进制位被抛弃)。
voidresize(size_type
num_bits,
boolvalue = false);
voidclear();//情空,大小为0
void push_back(boolbit);//大小增加1,动态
voidappend(Blockblock);//将
value中附加到bitset
最后
bool
operator[](size_type
pos)
const;//操作符重载
dynamic_bitset&operator&=(const
dynamic_bitset&b);
dynamic_bitset&operator|=(const
dynamic_bitset&b);
…还有^=、
~、>>,<<等
dynamic_bitset&set();
//bit翻转,置位
dynamic_bitset&reset();
dynamic_bitset&flip();
bool
test(size_type
n)const;//测试n位是否被设置
bool
any()
const;//有任何二进制位被设置true
bool
none()
const;//没有二进制位被设置,则为true
//return*this的一个拷贝,并翻转它的所有二进制位
dynamic_bitset
operator~()
const;
size_typecount()
const;//被设置的二进制位的数目
unsignedlong
to_ulong()
const;//
二进制位相应的数字值
size_typesize()
const;//
size_type
num_blocks()
const;//this
的
blocks数目。
//*this同类型的一个dynamic_bitset
对象的最大
size_type
max_size()
const;
bool
empty()
const;//this->size() == 0,则为true
//如果
thisbitset
是
bitset a
的一个子集,则为true
bool
is_subset_of(const
dynamic_bitset&a)
const;
bool
is_proper_subset_of(const
dynamic_bitset&a)
const;
size_type
find_first()
const;//被设置的二进制位的最小的索引
//比
pos
大的被设置的二进制位的最小的索引
size_type
find_next(size_type
pos)
const;
};
dynamic_bitset的出现恰好填补了这两者之间的空白,它类似标准库的bitset,提供丰富的位运算,同时长度又是动态可变的。
自己看……