STL容器之string、stack、queue、bitset

本文深入解析C++标准模板库(STL)中四种核心容器:字符串(string)、栈(stack)、队列(queue)和位集(bitset)的使用方法与特性。涵盖了从基本操作到高级功能的全面指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇:STL容器之set、map、unordered_set、unordered_map

1、字符串string

2、栈stack

3、队列queue

4、bit集bitset 


1、字符串string

=、assign()赋予新值
swap()交换两个string的内容
+=、append()、push_back()

添加字符。

str1.append(str2,1,3)表示将str2的从索引1开始的三个字符附加到str1;

str1.append("nico",5)表示将添加字符串数组:'n'  'i'  'c'  'o'  '\0';

str1.append(5, 'x') 表示添加5个x;

insert(index,str)

插入字符

erase()、pop_back()

删除字符

str.erase(13):删除第13个字符

str.erase(7, 5):删除第七个位置后的5个字符

clear()移除全部字符使之为空
resize()改变字符数量
replace(index,num,str2)替换字符,将str中重index开始的num个字符替换为str2
+串接string
==,!=,<=,>=,compare()

比较string,str1.compare(str2)中,返回0表示相等、小于0表示小于,大于0表示大于;

str1.compare(0, 2,str2,2, 2)表示比较str1的从0开始的2个字符和str2的从2开始的两个字符;

str1.compare(1,2,“bcx”,2)表示比较str1的从1开始的两个字符和“bcx”中的“bc”;

empty()判断字符是否为空
size()、length()返回字符的数量
max_size()返回字符的最大可能数

capacity()

返回重分配前的字符容量
reserve()保留一定容量内存以容纳一定数量的字符
shringk_to_fit()缩减字符使符合当前字符量
[]、at访问某个单一字符
front()、back()访问第一个、最末字符
>>,getline()从一个stream读取某值
<<将某值写入stream
stoi()、stol()、stoll()

将string转为带正负号的整数(int、long、long long),转换时会跳过前导的任何空白字符

    stoi(str,idxRet,base=10):第二个参数用于保存字符中未被处理的第一个字符索引,也就是字符串中的第一个无效字符,如果不关心则设置nullptr,第三个参数是数值的基数。

stoul()、stoull()将string转为不带正负号的整数(unsigned int、unsigned long long)
stof()、stod()、stold()将string转为浮点数(float、double、long double)
to_string(val)、to_wstring(val)将整数、浮点数转为string
const char c = 'a';
string s(1,c);        ---------------------
string s1;             ---------------------
s1.push_back(c); 
stringstream ss;  ---------------------
ss << c;
string str2 = ss.str();

将char转为string的三种方法:

  1.使用 string 的构造函数;

  2.声明string 后将char push_back;

 

  3.使用stringstream;

 

 

copy(buffer,num,beg_index)将string复制为一个字符数组
data()、c_str()将string的内容以C-string的内容返回
substr()

返回某个子字符串:

    str.substr(11):返回str的11个位置后的所有子串

    str.substr(5, 6) :返回str的第5个位置后的6个字符

find()

 

rfind()

find_first_of()

find_last_of()

find_first_not_of()

find_last_not_of()

查找第一个与val相等的字符串,返回索引;

    str1.find(str2,10):表示从str1的第10个位置开始查找

查找最后一个与val相等的字符串,返回索引;

查找第一个与val中的某值相等的字符串;

查找最后一个与val中的某值相等的字符串;

查找第一个与val中的任何值都不相等的字符串;

查找最后一个与val中的任何值都不相等的字符串;

begin()、end()提供正常的iterator支持
cbegin()、cend()提供const iterator支持
rbegin()、rend()提供reverse iterator支持
crbegin()、crend()提供const reverse iterator支持
get_allocator()返回分配器

2、栈stack

stack<string> stack初始化一个空的栈
stack.push(val)将一个元素放入stack之内
stack.top()返回stack的下一个元素,但并不移除它
stack.pop()从stack中移除元素,但并不返回它

3、队列queue

queue<string> queue初始化一个空队列
queue.push(val)将一个元素放入队列内
queue.front()返回队列的下一个元素(也就是第一个被插入的元素),但不移除它
queue.back()返回队列的最后一个元素(也就是最后一个被插入的元素),但不移除它
queue.pop()从队列中移除下一个元素,但并不返回它

4、bit集bitset 

bitset<n> b; 

bitset<n> b(u); 

bitset<n> b(s); 

bitset<n> b(s, pos, n); 

b有n位,每位都为0

b是unsigned long型u的一个副本

b是string对象s中含有的位串的副本

b是s中从位置pos开始的n个位的副本

b.any( ) 是否存在置为1的二进制位(和none()相反)
b.none( ) 是否不存在置为1的二进制位,即是否全部为0?和any()相反.
b.count( )二进制位为1的个数.
b.size( ) 二进制位的个数
b.flip() 把所有二进制位逐位取反
b.flip(pos) 把在pos处的二进制位取反
b[pos] 获取在pos处的二进制位
b.set() 把所有二进制位都置为1
b.set(pos) 把在pos处的二进制位置为1
b.reset() 把所有二进制位都置为0
b.reset(pos) 把在pos处的二进制位置为0
b.test(pos)在pos处的二进制位是否为1?
b.to_ulong( ) 用同样的二进制位返回一个unsigned long值
b.to_ullong()用同样的二进制位返回一个unsigned long long值
b.to_string ()返回对应的字符串.

参考:《C++标准》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值