C++STL(vector,map,set,list,bitset,deque)成员函数整理

C++STL(vector,map,set,list,bitset,deque)成员函数整理在这里插入图片描述补充:

vector 删除指定元素:

vec.erase(remove(vec.begin(), vec.end(), val), vec.end());

remove()返回的是删除后的尾部迭代器,必须调用erase()显式地删除其后的元素。

erase()删除迭代器指向的元素。

eg.

vec.erase(remove(vec.begin(),vec.end(), i),vec.end());
vec.erase(find(vec.begin(),vec.end(), i));

bitset

bitset所在的头文件 <bitset>

命名空间std

Attention:

唯一需要注意的是,bitset<>模板类虽然重载了中括号运算符,bs[0]表示的是将该数值转换为二进制时的最末尾元素,而非首位(其意义和数组并不相同)。

std::bitset<8> bs;
//bs[0] = 1;            // 0000 0001
//bs[7] = 1;            // 1000 0000

初始化:

默认无参构造
初始化全部位为0
十进制或者16进制数值

std::bitset<8> bs(7);
bs.to_string()  // 0000 0111
std::bitset<8> bs(0x07);
bs.to_string()  // 0000 0111

方法:
bitset的操作

在这里插入图片描述在这里插入图片描述
一些高级用法
首先看一个简单实例:

"1000 0000" - > 1
"1000 1000" - > 17

如何实现2进制向10进制的转换,而且二进制的表示形式是一种逆序的形式,即低位在前。

int bin2dec(const string& bin)
{
    std::bitset<8> bs(string(bin.rbegin(), bin.rend()));
    return bs.to_ulong();
}

这里回顾开头引用中的话,bitset的强大之处不在于表示一个二进制的数值,而是表达一种情况数,一个二进制位可以表示两种情况,两个二进制位可以表示4种状况数,3个二进制位可以表达8种状况数,等等。

deque

头文件:<deque>
名称空间:std

初始化:deque<数据类型> 变量名;

基本操作:

assign(beg,end) 将[beg,end)区间中的数据赋值给que。

assign(n,elem) 将n个elem的拷贝赋值给que。

at(idx) 传回索引idx所指的数据,如果idx越界,抛出out_of_range。

back() 返回容器的最后一个元素的引用。若que为空,则该操作未定义。

begin() 传回迭代器中的第一个数据地址。

clear() 移除容器中所有数据。

empty() 判断容器是否为空。

end() 返回一个迭代器,它指向容器que的最后一个元素的下一位置。

erase(pos) 删除pos位置的数据,传回下一个数据的位置。

erase(beg,end) 删除[beg,end)区间的数据,传回下一个数据的位置。

front() 返回容器que的第一个元素的引用。如果que为空,则该操作为空。

insert(pos,elem) 在pos位置插入一个elem拷贝,传回新数据位置

insert(pos,n,elem) 在pos(迭代器)位置插入>n个elem数据。无返回值

insert(pos,beg,end) 在pos位置插入在[beg,end)区间的数据。无返回值

max_size() 返回容器que可容纳的最多元素个数。

pop_back() 删除最后一个数据。

pop_front() 删除头部数据。

push_back(elem) 在尾部加入一个数据。

push_front(elem) 在头部插入一个数据。

rbegin() 返回一个逆序迭代器,它指向容器que的最后一个元素。

rend() 返回一个逆序迭代器,它指向容器que的第一个元素的前一个位置。

resize(num) 重新指定队列的长度。

size() 返回容器中实际数据的个数。

swap(que2) 交换容器que和que2中的所有元素。

swap(que1,que2) 交换容器que1和que2中的所有元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值