STL容器之string、stack、queue、bitset

【算法基础】C++STL容器 阅读详情

上一篇: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++标准》

从东南大学906被刷到调剂过程(内含个人感想) 介绍了自己在看到初试成绩,到后期复习以及调剂的全过程,当中也包含了自己的复试中的感想,希望大家理性看待。 阅读详情

相关推荐

若依RuoYi文件上传漏洞实战:如何安全配置/profile/upload路径(附避坑指南)

本文深入解析若依RuoYi框架中/profile/upload路径的文件上传漏洞,提供详细的安全配置方案和实战指南。通过权限修正、输入验证强化和存储隔离等多层防御策略,有效防范未授权访问和恶意文件上传风险,保障系统安全。

pink的博客 781

C++标准库学习(三)--队列和string类

今天学习了C++的queue和string类的基本操作。queue是自带的队列,应用很是方便。要注意,pop函数并不返回pop出的值。 #include #include using namespace std; int main() { queue queue_sample;//定义队列 int i; for(i=1;i<10;i++) {

每一只兔子都有一个大国梦 2030

项目回顾一:《高速多端口共享缓存模块》

本帖子仅为了回顾一下一年前自己动手完成的第一个数字ic设计项目的历程,为复试做一下准备,完成的这个sramc模块花了整整四个月的时间,从0到12个模块的代码产出以及模块的验证,虽然没有拿奖,也没有进入复赛,设计过程中使用的技术手段和算法也不太成熟,但这这是一个值得记录的过程!

weixin_60261760的博客 1256

JAVA数据结构_队列Queue_蓝桥杯_详解版

部分成员函数(包括继承的): add(): 增加一个元索,如果队列已满,则抛出一个异常 remove(): 移除并返回队列头部的元素,如果队列为空,则抛出一个异常 element(): 返回队列头部的元素,如果队列为空,则抛出一个异常 offer(): 添加一个元素并返回 true,如果队列已满,则返回 false poll(): 移除并返问队列头部的元素,如果队列为空,则返回 null peek(): 返回队列头部的元素,如果队列为空,则返回 null put():

m0_68576237的博客 514

【一文读懂】卫星轨道的轨道参数(六根数)和位置速度矢量转换及其在终端距离、相对速度和多普勒频移计算中的应用

本文首先介绍了卫星轨道的六根数参数:半长轴 a、偏心率 e、轨道倾角 i、升交点赤经 Ω、近地点幅角 ω 以及真近点角 ν,并探讨了如何利用这些参数计算卫星与地面终端之间的距离、相对速度及由此产生的多普勒频移。利用开普勒运动公式计算当前瞬间的轨道半径;根据真近点角 ν 在围心坐标系中计算位置矢量和速度矢量;利用旋转矩阵(依次旋转 ω、i、Ω)将围心坐标系的状态矢量转换到地心惯性坐标系;最终结合地面终端信息,计算卫星与终端的欧氏距离、沿视线的相对速度及多普勒频移。

u011376987的博客 9500

YOLO数据集实现数据增强的方法(裁剪、平移 、旋转、改变亮度、加噪声等)

数据集样本太少怎么办?数据集优质图像不够怎么办?如何做到更好的数据预处理?一文带你学会数据增强,还可实现带标签的扩充。

路人贾的博客 4万+

63 C++ 8个容器的类型及特点(string/vector/list/map/set/deque/queue/stack)

1. string基本概念 本质:string是C++风格的字符串,而string本质上是一个类 string和char * 区别: char * 是一个指针 string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器。 特点: string 类内部封装了很多成员方法 例如:查找find,拷贝copy,删除delete 替换replace,插入insert string管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责 总结: find

MakChiKin 1553

VS2019编译配置Easy3D

VS2019编译配置Easy3D

dayuhaitang1的博客 2599

C++容器详解之Queue

目录 1.Queue容器概述 2.queue对象的默认构造 3.queue 对象的带参构造 4.queue的push()与pop()方法 5.queue对象的拷贝构造与赋值 6.queue的数据存取 7.queue的大小 1.Queue容器概述 queue是队列容器,是一种“先进先出”的容器。 1.默认情况下queue是利用deque容器实现的一种容器。 2.它只允许在队列的前端(front)进行删除操作,而在队列的后端(back)进行插入操作 3.#include &..

qq_54169998的博客 2829

K-BERT: Enabling Language Representation with Knowledge Graph 代码复现 直接运行

K-BERT: Enabling Language Representation with Knowledge Graph K-BERT K-BERT 代码复现

1074

30天Python入门(第一天:Python入门)

30天带你入门Python,这是第一天

Science prince的博客 584

C++类模板——嵌套使用

C++类模板的嵌套使用

Crush_66的博客 3074

大数据与宠物:健康监测数据分析

随着全球宠物市场规模的快速增长(2023年全球宠物产业规模已达3500亿美元),宠物健康管理需求呈现指数级上升。传统宠物医疗依赖定期体检和症状观察,存在滞后性和主观性缺陷。本文聚焦如何通过物联网(IoT)设备采集宠物生理数据(体温、心率、活动量等),利用大数据分析技术构建实时健康监测系统,实现宠物健康状态的动态评估、异常预警和疾病预测。研究范围涵盖数据采集技术、数据预处理方法、机器学习模型构建及实际应用场景落地。背景介绍:明确研究目的、目标读者及核心术语核心概念与联系。

2502_91592937的博客 1068

C++之STL容器详解(包含十种常用容器)

C++的stl是提高编写效率的一个利器,是算法类竞赛必不可少的工具,本篇博客将详细总结C++STL的各种容器及其常用方法

2203_75327677的博客 4万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C++ STL容器使用指南:从string到bitset的全面解析

最常用的字符序列容器,支持丰富的字符串操作。无需配置环境,输入需求就能生成可运行示例,还能实时看到不同方法的执行效果。对于需要演示容器特性的场景,平台的一键部署功能可以直接生成可分享的演示页面,比本地IDE方便很多。operator[]访问不存在的key时会自动插入,这有时会导致意外行为,安全查询应该使用find()方法。:双端队列结合了vector和list的特性,支持头尾高效操作和随机访问。:看似简单但非常实用的模板类,常见于map的value_type或需要返回两个值的场景。在实际开发中,我发现。

SapphireFox89的博客 548

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C++ STL 容器基本使用详解:

C++ STL 容器: C++ STL vector 容器 vector容器的概念 vector在英文中是矢量的意思。 我们知道,一个数组必须要有固定的长度,在开一个数组的时候,这个长度也就被静态地确定下来了。但是vector却是数组的“加强版”,对于一组数据来讲,你往vector里存多少数据,vector的长度就有多大。也就是说,我们可以将其理解为一个“变长数组”。 事实上,vector的实现方...

anana125的博客 5509

C++STL容器总结(自用)

STL超全面总结,算法入门必学

Emily_loves_code的博客 1139

STL总结

STL总结 vector #include<vector> vector<int> v; vector<double> v(10,8.6); v.push_back(); //尾部扩充元素 vector<int>::iterator it; for(it=v.begin();it!=v.end();it++) cout<<*it; v...

雷银行的博客 346

C++ STL

C++ STL 的用法 上次遇到容器的运用,根本不会,然后学长和学弟(这个强人)到网上就找到了容器的用法和帮助文档,真是瞌睡来了就有人送枕头啊!!(PS:我找过C++的标准库文档,要么就是有问题打不开,要么就不是我要的。。哭。。。) 数据结构 描述 实现头文件 向量(vector) 连续存储的元素

蚕豆儿 1867

C++ STL 用法解释

C++ STL

是芜湖的,更是世界的! 2692

C++ STL使用技巧

vector:变长数组,数组长度是可以动态变化的,倍增的思想c++ STL容器 --- 动态数组vector_小雪菜本菜的博客-优快云博客 string:字符串,常用函数:substr():返回某一个子串、c_str():返回这个 string 对应的字符数组头指针 queue:队列,常用函数:push():往队尾插入一个元素、front():返回队头元素、back():返回队尾元素、pop():把队头弹出 priority_queue:优先队列,其实是一个堆,常用函数:push():往堆中插入.

weixin_60569662的博客 471

STL容器用法总结

vector 向量、pair、string 字符串、stack 栈、queue 队列、deque 双向队列、priority_queue 优先队列(堆)、set/multiset/unordered_set、map/multimap/unordered_map

li_wen_zhuo的博客 1099

STL总结与一些练习题

目录vectorstringset 集合容器multiset 多重集合容器map 映照容器multimap 多重映照容器deque 双端队列容器list 双向链表容器bitset 位集合容器stack 堆栈容器queue 队列容器priority_queue 优先队列容器 本文参考资料: 国际大学生程序设计竞赛指南 STL(Standard Template Library) 提供三种类型的组件:容器、迭代器和算法,它们都支持泛型程序设计标准 泛型编程(Generic Programming)最初提出时的动

人工智能方向,计算机视觉(https://github.com/chenshunpeng) 2296

STL容器

头文件set主要包括set和multiset(两者方法相同,所以以下只用set举例)两个容器,分别是“有序集合”和“有序多重集合”,即前者的元素不能重复,而后者可以包含若干个相等的元素,两者都会将其容器内的元素从小到大自动排序。其中queue容器相当于队列,满足先进先出的原则。优先队列中存储结构体类型,必须要设置优先级,即结构体的比较运算(因为优先队列的堆中要比较大小,才能将对应最大或者最小元素移到堆顶)。对first先排序,大的排在前面,如果first元素相同,再对second元素排序,保持大的在前面。

2401_88587663的博客 354

对于C++STL及其时间复杂度的总结

由于本次在山东CCPC邀请赛中,对于堆的时间复杂度记忆不清晰,导致第4题没有做出来,与铜牌失之交臂,故觉应整理STL的时间复杂度。本文仅整理有用(竞赛)的stl及其用法,并且不阐述过于基础的内容。

2302_79440616的博客 2838

C++标准模板类STL

【stack】 1.empty() 堆栈为空则返回真 2.pop() 移除栈顶元素 3.push() 在栈顶增加元素 4.size() 返回栈中元素数目 5.top() 返回栈顶元素 【vector】 1.push_back() 在数组的最后添加一个数据 2.pop_back() 去掉数组的最后一个数据 3.at() 得到编号位置的数据 4.begin() 得到数组头的指针 5.end() 得到数组的最后一个单元+1的指针 6.front() 得到数组头的引用 7.back() 得到数组的最后一个单元的引

公众号:瑞行AI 777
上一篇: STL容器之set、map、unordered_set、unordered_map
下一篇: C/C++中容易造成缓冲区溢出的函数
蓬莱道人
博客等级 码龄11年 766粉丝 274原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值