c++ 字符串与STL用法

文章目录

  • String
  • Vector
    • 构造
    • 增加
    • 删除
    • 大小
    • 清空
    • 排序
  • map
    • 定义
    • 添加数据
    • 遍历数据
    • 查找
    • 清空
    • 删除
    • 长度
    • 判断空
    • 交换
    • 排序
      • 常用用法

String

Vector

vector是动态扩充的数组

构造

  • vector()​:创建一个空vector
  • vector(int nSize)​:创建一个vector,元素个数为nSize
  • ​vector(int nSize,const t& t)​:创建一个vector,元素个数为nSize,且值均为t
  • ​vector(const vector&)​:复制构造函数
  • vector(begin,end)​:复制[begin,end)区间内另一个数组的元素到vector中

增加

  • ​void push_back(const T& x)​:向量尾部增加一个元素X
  • ​iterator insert(iterator it,const T& x)​:向量中迭代器指向元素前增加一个元素x
  • ​iterator insert(iterator it,int n,const T& x)​:向量中迭代器指向元素前增加n个相同的元素x
  • ​iterator insert(iterator it,const_iterator first,const_iterator last)​:向量中迭代器指向元素前插入另一个相同类型向量的[first,last)间的数据

删除

  • ​iterator erase(iterator it)​:删除向量中迭代器指向元素
  • ​iterator erase(iterator first,iterator last)​:删除向量中[first,last)中元素
  • ​void pop_back()​:删除向量中最后一个元素
  • ​void clear()​:清空向量中所有元素

大小

vec.size()​;

清空

vec.clear();

排序

定义比较代码

bool Comp(const int &a,const int &b)
{
    return a>b;
}

调用sort 排序

#include<algorithm>
sort(vec.begin(),vec.end(),Comp)

map

定义

map<type1 name,type2 name> maps;//第一个是键的类型,第二个是值的类型

添加数据

map容器内元素的访问
通过下标进行访问

通过迭代器进行访问
map可以使用it->first来访问键,使用it->second访问值

#include<iostream>
#include<map>
using namespace std;
int main(){
	//定义
	map<char, int> maps;
	// insert 函数插入pair数据
    maps.insert(pair < char,int > ('b',20));
    // insert 函数插入value_type数据
    maps.insert(map < char, int > ::value_type ('a', 10));
    // 数组方式插入数据
    maps['d'] = 10;
    maps['e'] = 20;
    //遍历
    for (map<char, int>::iterator it = maps.begin(); it != maps.end(); it++) {
        cout<<it->first<<" "<<it->second<<endl;
   return
   }

输出
在这里插入图片描述

遍历数据

  1. 前向迭代器
    map<char, int> ::iterator it;
    for(it = maps.begin(); it != maps.end();it++){
        cout<<it->first<<" "<<it->second<<endl;
    }
  1. 反向迭代器
 map<char, int>::reverse_iterator iter;
    for(iter = maps.rbegin(); iter!=maps.rend();iter++){
        cout<<iter->first<<" "<<iter->second<<endl;
    }

查找

maps.find() 查找一个元素
find(key): 返回键是key的映射的迭代器
如果等于迭代器的末尾,则表明未找到


findit=maps.find('b');
if(findit == maps.end()){
    cout<<"not find"<<endl;
}else{
    cout<<"find"<<endl;
}

清空

maps.clear()清空

删除

maps.erase()删除一个元素

it = maps.find("123");
maps.erase(it);

//关键字删除
int n = maps.erase("123"); //如果刪除了返回1,否则返回0

//用迭代器范围刪除 : 把整个map清空
maps.erase(maps.begin(), maps.end());
//等同于maps.clear()

长度

maps.szie()长度

int len=maps.size();获取到map中映射的次数

判断空

maps.empty()判断其是否为空

交换

maps.swap()交换两个map 不是交换map里的两个元素

 map < int, int > m1, m2, m3;
    map < int, int >::iterator m1_Iter;
    m1.insert ( pair < int, int >  ( 1, 10 ) );
    m1.insert ( pair < int, int >  ( 2, 20 ) );
    m1.insert ( pair < int, int >  ( 3, 30 ) );
    m2.insert ( pair < int, int >  ( 10, 100 ) );
    m2.insert ( pair < int, int >  ( 20, 200 ) );
    m3.insert ( pair < int, int >  ( 30, 300 ) );
    cout << "The original map m1 is:";
    for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )
        cout << " " << m1_Iter->second;
    cout   << "." << endl;
    // This is the member function version of swap
    //m2 is said to be the argument map; m1 the target map
    m1.swap( m2 );
    cout << "After swapping with m2, map m1 is:";
    for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )
        cout << " " << m1_Iter -> second;
    cout  << "." << endl;
    cout << "After swapping with m2, map m2 is:";
    for ( m1_Iter = m2.begin( ); m1_Iter != m2.end( ); m1_Iter++ )
        cout << " " << m1_Iter -> second;
    cout  << "." << endl;
    // This is the specialized template version of swap
    swap( m1, m3 );
    cout << "After swapping with m3, map m1 is:";
    for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )
        cout << " " << m1_Iter -> second;
    cout   << "." << endl;

m1.swap(m2) :将m1与m2交换
在这里插入图片描述

排序

map 中的元素是自动按key进行升序,不能使用sort排序

常用用法

begin()                  返回指向 map 头部的迭代器

clear()                 删除所有元素

count()                  返回指定元素出现的次数

empty()                 如果 map 为空则返回 true

end()                     返回指向 map 末尾的迭代器

equal_range()        返回特殊条目的迭代器对

erase()                   删除一个元素

find()                     查找一个元素

get_allocator()      返回map的配置器

insert()                  插入元素

key_comp()          返回比较元素key的函数

lower_bound()     返回键值>=给定元素的第一个位置

max_size()            返回可以容纳的最大元素个数

rbegin()                返回一个指向map尾部的逆向迭代器

rend()                   返回一个指向map头部的逆向迭代器

size()                    返回map中元素的个数

swap()                 交换两个map

upper_bound()    返回键值>给定元素的第一个位置

value_comp()       返回比较元素value的函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/534017.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【MATLAB】基于Wi-Fi指纹匹配的室内定位-仿真获取WiFi RSSI数据(附代码)

基于Wi-Fi指纹匹配的室内定位-仿真获取WiFi RSSI数据 WiFi指纹匹配是室内定位最为基础和常见的研究&#xff0c;但是WiFi指纹的采集可以称得上是labor-intensive和time-consuming。现在&#xff0c;给大家分享一下我们课题组之前在做WiFi指纹定位时的基于射线跟踪技术仿真WiFi…

Josephus排列:组合数学与跨学科应用

Josephus排列&#xff1a;组合数学与跨学科应用 一、背景二、定义和历史三、问题的形式化描述四、解决方案4.1 n2&#xff0c;任意m4.2 m1&#xff0c;任意n4.3 n为奇数&#xff0c;m为偶数4.4 n和m都是奇数 五、红黑树简介六、Josephus排列问题描述七、使用红黑树解决Josephus…

设计模式之备忘录模式(上)

备忘录模式 1&#xff09;概述 1.定义 在不破坏封装的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态&#xff0c;可以在以后将对象恢复到原先保存的状态。 2.作用 备忘录模式提供了一种状态恢复的实现机制&#xff0c;使得用户可以方便…

展厅设计方案需要考虑哪些因素环节

1、整体展厅规划 整体规划是展厅搭建中需要优先考虑的环节&#xff0c;必须为搭建成本和效果提供坚实的基础。需确定整体展厅面积、展厅的使用目的、产品布局以及进入展厅的路线、确定展厅的整体框架之后&#xff0c;还需考虑展品种类、产生的呈现效果&#xff0c;这些都将影响…

el-table动态合并列

需要合并列&#xff0c;并且不确定需要合并多少列的&#xff0c;可以参照如下代码 首先需要再el-table上传入span-method方法 arraySpan({ row, column, rowIndex, columnIndex }){if (row.groupName 汇总 && columnIndex 0) {return [0,0]} else if (row.groupName…

迷宫 — — 蓝桥杯(动态规划)

迷宫 题目&#xff1a; 输入样例&#xff1a; 3 1 1 1 2 3 4 5 6 7 8 9 2 2 1 3 1 R输出样例&#xff1a; 21思路&#xff1a; 题目大意&#xff1a;给定一个n x m的平面网格&#xff0c;并且每一个格子都有一定的代价&#xff0c;并且设有障碍物和陷阱&#xff0c;障碍物的意…

win11 连接海康摄像头 ONVif协议

目录 Win 11 通过脚本打开自带的IE浏览器访问海康摄像头 海康摄像头设置支持onvif协议 安装onvif协议 onvif协议示例代码 Win 11 通过脚本打开自带的IE浏览器访问海康摄像头 第一步、桌面右键新建一个 txt 的文档 第二步、打开文档并且复制粘贴下面代码 CreateObject(&…

【科研】搜索文献的网站

文章目录 paperswithcode【最新论文&#xff0c;代码】huggingface【大语言模型&#xff0c;最新论文】dblp【关键词搜索】arxiv【最新文章】semanticscholar【相关引用查询】connectedpapers【相关引用查询】github【工程&#xff0c;代码&#xff0c;论文开源代码】 paperswi…

OV证书为什么更可信

在网络安全领域&#xff0c;SSL/TLS证书扮演着至关重要的角色&#xff0c;其中组织验证&#xff08;Organization Validation&#xff0c;简称OV&#xff09;证书以其深度验证机制和高度可信性脱颖而出。 OV证书为何更值得信赖&#xff0c;关键在于其严格的验证流程。 首先&am…

金三银四面试题(十九):MySQL中的锁

在MySQL中&#xff0c;锁是非常重要的&#xff0c;特别是在多用户并发访问数据库的环境中&#xff0c;因此也是面试中常问的话题。 请说说数据库的锁&#xff1f; 关于MySQL 的锁机制&#xff0c;可能会问很多问题&#xff0c;不过这也得看面试官在这方面的知识储备。 MySQL …

东方博宜 1169. 编程输入10个正整数,然后自动按从大到小的顺序输出

东方博宜 1169. 编程输入10个正整数&#xff0c;然后自动按从大到小的顺序输出 学了sort函数的新用法。 从小到大排列 sort(a , an ) 从大到小排列 sort(a , an , greater() ) #include<iostream> #include<algorithm> using namespace std; int main() {int a[…

瑞_23种设计模式_访问者模式

文章目录 1 访问者模式&#xff08;Visitor Pattern&#xff09;1.1 介绍1.2 概述1.3 访问者模式的结构1.4 访问者模式的优缺点1.5 访问者模式的使用场景 2 案例一2.1 需求2.2 代码实现 3 案例二3.1 需求3.2 代码实现 4 拓展——双分派4.1 分派4.2 动态分派&#xff08;多态&am…

新型[datahelper@onionmail.org].datah 勒索病毒来袭:如何筑起安全防线?

在数字化时代&#xff0c;网络安全问题日益凸显&#xff0c;其中勒索病毒成为了一种非常严重的威胁。[datahelperonionmail.org].datah勒索病毒就是其中的佼佼者&#xff0c;它以其复杂的加密手段和恶劣的勒索行为&#xff0c;给用户带来了巨大的损失。本文将从病毒的运行机制、…

systemctl start docker报错(code=exited, status=1/FAILURE)

运行systemctl start docker报错内容如下: 输入systemctl status docker.service显示以下内容&#xff1a; 本次启动不起来与docker服务无关 具体解决问题是修改 /etc/docker/daemon.json&#xff0c;vim /etc/docker/daemon.json # 添加如下内容 {"registry-mirrors&qu…

Win10安装sqlplus遇到报错的解决办法

1.下载安装sqlplus.exe的错误解决过程 最近有用到sqlplus连接Oracle数据库执行自动化脚本&#xff0c;Orcle服务器版本是11.2.0.1。在Navicat工具上通过如下语句查询到的版本信息截图如图1所示&#xff1a; SELECT * FROM v$version; 图1 Oracle服务器版本信息 其中“Oracle Da…

图像分割-RSPrompter

文章目录 前言1. 自动化提示器1.1 多尺度特征增强器1.2 RSPrompterAnchor-based PrompterQuery-based Prompter 2. SAM的扩展3. 结果WHU数据集NWPU数据集SSDD数据集 前言 《RSPrompter: Learning to prompt for remote sensing instance segmentation based on visual foundati…

面试算法-172-对称二叉树

题目 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true 解 class Solution {public boolean isSymmetric(TreeNode root) {return isSymm(root.left,root.right);}public b…

Python学习笔记——heapq

堆排序 思路 堆排序思路是&#xff1a; 将数组以二叉树的形式分析&#xff0c;令根节点索引值为0&#xff0c;索引值为index的节点&#xff0c;子节点索引值分别为index*21、index*22&#xff1b;对二叉树进行维护&#xff0c;使得每个非叶子节点的值&#xff0c;都大于或者…

Redis持久化策略详解

文章目录 前言一、RDB(Redis Database)1.1 概念1.2 触发方式 二、AOF(Append Only File)2.1 概念2.2 AOF持久化策略2.3 AOF文件重写2.4 触发条件2.5 AOF配置说明 三、混合持久化3.1 概念3.2 开启混合持久化3.3 加载流程3.4 混合持久化优劣势 四、总结4.1 RDB和AOF各自有什么优缺…

一文带你了解Material, Texture Mapping, Shading, Shader

作者&#xff1a;caven chen 在计算机图形学和三维开发过程中&#xff0c;有几个容易混淆的概念。今天我们来一举拿下。 又可以学习新的知识啦。冲鸭。。。。。。 基础概念 首先我们来介绍一些基础概念: 英文 中文 本质 释义 Material 材质 数据集 表现物体对光的交互…