容器C++

string容器

 string构造函数

#include<iostream>
using namespace std;
#include<string.h>
void test01() {string s1;//默认构造const char* str = "hello world";string s2(str);//传入char*cout << "s2=" << s2 << endl;string s3(s2);//传入stringcout << "s3=" << s3 << endl;string s4(5, 'a');//5个acout << "s4=" << s4 << endl;
}
int main() {test01();return 0;
}

 赋值操作

#include<iostream>
using namespace std;
#include<string.h>
//赋值操作
void test() {string str1;str1 = "hello";//=赋值cout << str1 << endl;string str2;str2 = str1;cout << str2 << endl;string str3;str3 = 'a';//可以把单个字符赋值给字符串cout << str3 << endl;string str4;str4.assign("hello c++");//assign赋值cout << str4 << endl;string str5;str5.assign("study", 3);//把字符串的前3个字符赋值给str5cout << str5 << endl;string str6;str6.assign(str5);cout << str6 << endl;string str7;str7.assign(6, 'w');cout << str7 << endl;
}
int main() {test();return 0;
}

字符串拼接

字符串末尾追加字符串

#include<iostream>
using namespace std;
#include<string.h>
//字符串拼接
void test() {string s1="hello";s1 += " world";//追加字符串cout << s1 << endl;s1 += '!';//追加字符cout << s1 << endl;string s2 = " study";s1 += s2;//追加字符串cout << s1 << endl;s1.append(" up up");cout << s1 << endl;s1.append(" eat food", 3);//把前n个字符拼接进来cout << s1 << endl;s1.append(s2);cout << s1 << endl;s1.append(s2, 0, 2);//从第0个位置截取2个字符,追加上cout << s1 << endl;
}
int main() {test();return 0;
}

string查找和替换

void test() {string s1 = "abcdefgcd";int pos = s1.find("cd");//3  返回d的位置。没有这个字串返回-1if (pos == -1) {cout << "未找到字符串" << endl;}else {cout << pos << endl;//pos=2   position 位置}//rfind//rfind从右往左查找,find从左往右查找pos = s1.rfind("cd");//7cout << pos << endl;
}//替换
void test02() {string s1 = "abcdefg";s1.replace(1, 3, "1111");//从1号位置起 3个字符,替换成1111cout << s1 << endl;//a1111efg
}

string的字符串比较

void test() {string s1 = "hello";string s2 = "hello";if (s1.compare(s2) == 0)cout<<"相等" << endl;else if(s1.compare(s2) > 0)cout << "s1>s2" << endl;else if(s1.compare(s2)<0)cout << "s1<s2" << endl;
}

string字符读取

void test() {string s1 = "hello";//cout << s1 << endl;for (int i = 0; i < s1.size(); i++)cout << s1[i] << " ";cout << endl;for (int i = 0; i < s1.size(); i++)cout << s1.at(i) << " ";s1[2] = 'a';//可以修改字符s1.at(1) = 'b';
}

string插入和删除

void test() {string str = "hello";str.insert(1, "111");//插入111cout << str << endl;str.erase(1, 3);//删除111.从1号位置删除3个字符
}

string字串

从字符串中获取想要的字串

void test02() {string email = "zhangsan@qq.com";//从邮箱中获取用户名int pos = email.find("@");cout << email.substr(0, pos) << endl;
}

vector

相似于数组,也称为单端数组。

和数组不同的是,vector可以动态扩展

#include<iostream>
using namespace std;
#include<vector>//vector头文件
//iterator迭代器
void printVector(vector<int>&v) {for (vector<int>::iterator it = v.begin(); it != v.end(); it++)cout << *it << " ";cout << endl;
}void test() {vector<int>v1;//默认构造 无参构造for (int i = 0; i < 10; i++)v1.push_back(i);printVector(v1);//通过区间方式进行构造vector<int>v2(v1.begin(), v1.end());printVector(v2);//n个 elem方式构造vector<int>v3(3, 5);//3个5printVector(v3);//拷贝构造vector<int>v4(v3);printVector(v4);
}
int main() {test();return 0;
}

vector赋值操作

void printVector(vector<int>& v) {for (vector<int>::iterator it = v.begin(); it != v.end(); it++)cout << *it << " ";cout << endl;
}void test() {vector<int>v1;for (int i = 0; i < 10; i++)v1.push_back(i);printVector(v1);//operator= 赋值vector <int>v2;v2 = v1;printVector(v2);//assignvector<int>v3;v3.assign(v1.begin(), v1.end());printVector(v3);//n个 elem方式赋值vector<int>v4;v4.assign(5, 100);//5个100printVector(v4);
}

vector容器  容量和大小

#include<iostream>
using namespace std;
#include<vector>//vector头文件void printVector(vector<int>& v) {for (vector<int>::iterator it = v.begin(); it != v.end(); it++)cout << *it << " ";cout << endl;
}
void test() {vector<int>v1;for (int i = 0; i < 10; i++) {v1.push_back(i);}printVector(v1);if (v1.empty())cout << "v1为空" << endl;else {cout << "v1不为空" << endl;cout << v1.capacity() << endl;cout << v1.size() << endl;}//重新指定大小 v1.resize(15,100);//指定用100填充   v1.resize(15);   printVector(v1);//如果重新指定的比原来长,默认用0填充v1.resize(5);//指定的比原来短,超出的部分会删掉printVector(v1);
}int main() {test();return 0;
}

 插入和删除

void test() {vector<int>v1;//尾插v1.push_back(10);v1.push_back(20);v1.push_back(30);v1.push_back(40);v1.push_back(50);//遍历printVector(v1);//尾删v1.pop_back();printVector(v1);//插入 第一个参数是迭代器v1.insert(v1.begin(), 100);//起始迭代器printVector(v1);v1.insert(v1.begin(), 2, 1000);//在起始迭代器处插入2个1000printVector(v1);//删除v1.erase(v1.begin());//在起始迭代器处删除printVector(v1);//清空//v.clear();v1.erase(v1.begin(), v1.end());//提供一个区间printVector(v1);
}

vector数据存取

void test() {vector<int>v1;for (int i = 0; i < 10; i++) {v1.push_back(i);//尾插法}for (int i = 0; i < v1.size(); i++) {cout << v1[i] << " ";}cout << endl;for (int i = 0; i < v1.size(); i++)cout << v1.at(i) << " ";cout << endl;//获取第一个元素cout << v1.front() << endl;//获取最后一个元素cout << v1.back() << endl;
}

vector互换容器

void test() {vector<int>v;int num = 0;//统计开辟次数int* p = NULL;for (int i = 0; i < 10000; i++) {v.push_back(i);if (p != &v[0]) {p = &v[0];num++;}}cout << num << endl;
}

deque容器

#include<iostream>
using namespace std;
#include<deque>
void printDeque(const deque<int>&d) {for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++)cout << *it << " ";cout << endl;
}
void test() {deque<int>d1;for (int i = 0; i < 10; i++){d1.push_back(i);//插数}printDeque(d1);deque<int>d2(d1.begin(), d1.end());printDeque(d2);deque<int>d3(5, 100);printDeque(d3);deque<int>d4(d3);printDeque(d4);
}
int main() {test();return 0;
}

赋值

void printDeque(const deque<int>&d) {//const使其只读for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++)cout << *it << " ";cout << endl;
}
void test() {deque<int>d1;for (int i = 0; i < 10; i++) {d1.push_back(i);}printDeque(d1);//operator= 赋值deque<int>d2;d2 = d1;printDeque(d2);//assign 赋值deque<int>d3;d3.assign(d1.begin(), d1.end());printDeque(d3);deque<int>d4;d4.assign(5, 6);printDeque(d4);
}

deque容器大小

void test() {deque<int>d1;for (int i = 0; i < 10; i++)d1.push_back(i);if (d1.empty())cout << "d1为空" << endl;else {cout << "d1不为空" << endl;cout << d1.size() << endl;//deque没有容量的概念,可以无限放//重新指定大小//d1.resize(15);d1.resize(15, 3);//多的用3填充printDeque(d1);}
}

deque容器的插入和删除

#include<iostream>
using namespace std;
#include<deque>
void printDeque(const deque<int>d) {//const防止误修改for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++)cout << *it << " ";cout << endl;
}
void test() {deque<int>d1;//尾插d1.push_back(10);d1.push_back(20);//头插d1.push_front(30);d1.push_front(40);printDeque(d1);//40 30 10 20//尾删d1.pop_back();printDeque(d1);//40 30 10//头删d1.pop_front();printDeque(d1);//30 10
}void test02() {deque<int>d1;//尾插d1.push_back(10);d1.push_back(20);//头插d1.push_front(30);d1.push_front(40);printDeque(d1);//40 30 10 20//insert插入d1.insert(d1.begin(), 1000);printDeque(d1);//1000 40 30 10 20d1.insert(d1.begin(), 3, 9);printDeque(d1);//9 9 9 1000 40 30 10 20//删除指定位置deque<int>::iterator it = d1.begin();it+=5;d1.erase(it);printDeque(d1);//9 9 9 1000 40 10 20//按照区间的形式删除d1.erase(d1.begin(), it);//10 20printDeque(d1);//按照区间进行插入deque<int>d2;d2.push_back(1);d2.push_back(2);d2.push_back(3);d1.insert(d1.begin(), d2.begin(), d2.end());printDeque(d1);//1 2 3 10 20//清空d1.clear();printDeque(d1);//只剩一个换行了
}
int main() {test();test02();return 0;
}

数据存取

void test() {deque<int>d1;d1.push_back(10);d1.push_back(20);d1.push_back(30);d1.push_front(100);d1.push_front(200);d1.push_front(300);//[]方式for (int i = 0; i < d1.size(); i++)cout << d1[i] << endl;//at方式for (int i = 0; i < d1.size(); i++)cout << d1.at(i) << endl;cout << "第一个元素:" << d1.front() << endl;cout << "最后一个元素:" << d1.back() << endl;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【2.项目管理】2.4 Gannt图【甘特图】

甘特图&#xff08;Gantt&#xff09;深度解析与实践指南 &#x1f4ca; 一、甘特图基础模板 项目进度表示例 工作编号工作名称持续时间(月)项目进度&#xff08;周&#xff09;1需求分析3▓▓▓░░░░░░░2设计建模3░▓▓▓░░░░░░3编码开发3.5░░░▓▓▓▓░░…

C++List模拟实现|细节|难点|易错点|全面解析|类型转换|

目录 1.模拟代码全部 2.四大块代码理解 1.最底层&#xff1a;ListNode部分 2.第二层&#xff1a;ListIterator部分 3.第三层&#xff1a;ReserveListIterator部分 4最终层&#xff1a;List 1.模拟代码全部 using namespace std; template<class T> struct ListNode …

【深度学习与实战】2.1、线性回归模型与梯度下降法先导

import numpy as np# 数据准备 X np.array([1, 2, 3]) y np.array([3, 5, 7])# 参数初始化 w0, w1 0, 0 alpha 0.1 n len(X)# 迭代10次 for epoch in range(10):# 计算预测值y_pred w1 * X w0# 计算梯度grad_w0 (1/n) * np.sum(y_pred - y)grad_w1 (1/n) * np.sum((y_…

锐捷EWEB路由器 timeout.php任意文件上传漏洞代码审计(DVB-2025-9003)

免责声明 仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 一:产品介绍 锐捷EWEB路由器是锐…

flask开发中设置Flask SQLAlchemy 的 db.Column 只存储非负整数(即 0 或正整数)

如果你想控制一个 Flask SQLAlchemy 的 db.Column 只存储非负整数&#xff08;即 0 或正整数&#xff09;&#xff0c;你可以在模型中使用验证来确保这一点。一种常见的方法是使用模型的 validate 方法或者在执行插入或更新操作时进行检查。 以下是实现这一目标的几种方法&…

sqlmap 源码阅读与流程分析

0x01 前言 还是代码功底太差&#xff0c;所以想尝试阅读 sqlmap 源码一下&#xff0c;并且自己用 golang 重构&#xff0c;到后面会进行 ysoserial 的改写&#xff1b;以及 xray 的重构&#xff0c;当然那个应该会很多参考 cel-go 项目 0x02 环境准备 sqlmap 的项目地址&…

vscode连接服务器失败问题解决

文章目录 问题描述原因分析解决方法彻底删除VS Code重新安装较老的版本 问题描述 vscode链接服务器时提示了下面问题&#xff1a; 原因分析 这是说明VScode版本太高了。 https://code.visualstudio.com/docs/remote/faq#_can-i-run-vs-code-server-on-older-linux-distribu…

企业网站源码HTML成品网站与网页代码模板指南

在当今数字化时代&#xff0c;企业网站已成为展示品牌形象、吸引客户和提供在线服务的重要工具。对于许多企业来说&#xff0c;使用现成的HTML网站源码模板是快速搭建网站的高效方式。本文将详细介绍企业网站源码、HTML成品网站以及网页代码模板的相关内容&#xff0c;帮助你快…

计算机网络 - OSI 七层模型

OSI 七层模型 OSI&#xff08;Open System Interconnection&#xff0c;开放系统互联&#xff09;模型由 ISO&#xff08;国际标准化组织&#xff09; 制定&#xff0c;目的是为不同计算机网络系统之间的通信提供一个标准化的框架。它将网络通信划分为 七个层次&#xff0c;每…

flutter-实现瀑布流布局及下拉刷新上拉加载更多

文章目录 1. 效果预览2. 结构分析3. 完整代码4. 总结 1. 效果预览 在 Flutter 应用开发中&#xff0c;瀑布流布局常用于展示图片、商品列表等需要以不规则但整齐排列的内容。同时&#xff0c;下拉刷新和上拉加载更多功能&#xff0c;能够极大提升用户体验&#xff0c;让用户方…

在 Ubuntu 下通过 Docker 部署 Nginx 服务器

1. Docker 和 Nginx 简介以及实验环境 Docker 是一个开源的容器化平台&#xff0c;允许开发者将应用程序及其依赖项打包成一个轻量级的、可移植的容器。通过 Docker&#xff0c;开发者可以在任何支持 Docker 的环境中运行应用&#xff0c;从而实现一致的开发和生产环境。Docke…

IoT平台实时监测机器人状态的实现方案

通过IoT平台实时监测机器人状态的实现方案与可执行路径 一、整体架构设计 #mermaid-svg-6xMlDfFSZM4Wc8tA {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-6xMlDfFSZM4Wc8tA .error-icon{fill:#552222;}#mermaid-sv…

mybatis里in关键字拼接id问题

我们一般会把ids集合用StrUtil.join(‘,’)转成"1,2,3"这种形式 然后放入in中 我们会这么写: select id, nick_name, icon from tb_user where id in (#{ids}) order by FIELD(id, #{ids})结果发现sql执行是这样的: select id, nick_name, icon from tb_user where…

4.用 Excel 录入数据

一 用 Excel 录入数据的两种方式 用鼠标键盘录入数据和从网上爬取数据。 二 用鼠标键盘录入数据 1.录入数据的规范 横着录入数据&#xff08;横着一条条录入数据&#xff09;。 2.使用快捷键进行数据录入 tab 键和 enter 键。 tab 键&#xff1a;向右移动一个单元格。 tab 键…

C++类与对象-3.23笔记

今天学习了类的概述和写类的基本框架 在哔哩哔哩学习的这个老师的C面向对象高级语言程序设计教程&#xff08;118集全&#xff09;讲的很不错&#xff08;真的&#xff01;&#xff01;&#xff01;&#xff09;&#xff0c;C语言也是在这个老师的带领下学习的 #include<io…

Android读写权限分析

Android系统使用的是Linux内核&#xff0c;所以Android系统沿用了linux系统的那一套文件读写权限。 目录 1&#xff0c;权限解读1.1&#xff0c;权限分为三种类型&#xff1a;1.2&#xff0c;权限针对的三类对象&#xff1a;1.3&#xff0c;文件和目录的权限区别1.3.1&#xf…

Python二分查找【清晰易懂】

1. 二分查找是什么&#xff1f; 想象你在玩“猜数字”游戏&#xff1a; 对方心里想一个 1~100 的数字&#xff0c;你每次猜一个数&#xff0c;对方会告诉你是“大了”还是“小了”。 最快的方法&#xff1a;每次都猜中间的数&#xff01;比如第一次猜50&#xff0c;如果大了&…

关于Qt的各类问题

目录 1、问题&#xff1a;Qt中文乱码 2、问题&#xff1a;启动时避免ComBox控件出现默认值 博客会不定期的更新各种Qt开发的Bug与解决方法,敬请关注! 1、问题&#xff1a;Qt中文乱码 问题描述&#xff1a;我在设置标题时出现了中文乱码 this->setWindowTitle("算法…

关于我对接了deepseek之后部署到本地将数据存储到mysql的过程

写在前面 今天写一下使用nodejs作为服务端&#xff0c;vue作为客户端&#xff0c;mysql的数据库&#xff0c;对接deepseek的全过程&#xff0c;要实现一个很简单的效果就是&#xff0c;可以自由的询问&#xff0c;然后可以将询问的过程存储到mysql的数据库中。 文档对接 deeps…

游戏引擎学习第182天

回顾和今天的计划 昨天的进展令人惊喜&#xff0c;原本的调试系统已经被一个新的系统完全替换&#xff0c;新系统不仅能完成原有的所有功能&#xff0c;还能捕获完整的调试信息&#xff0c;包括时间戳等关键数据。这次的替换非常顺利&#xff0c;效果很好。 今天的重点是在此基…