当前位置: 首页 > news >正文

C++中STL学习(一)——向量、栈、堆、集合

#include “bits/stdc++.h”
using namespace std;

int main() {
// -------------------- 1、向量vector:可以替换数组,不需要事先指定长度
// -------------------------
vector arr; // 构建int数组
vector arr1(100); // 构建初始长度100的int向量
vector arr2(100, 1); // 构建初始长度100,初始值1的int向量
vector<vector> mat(100, vector());
vector<vector> mat2(100, vector(100, -1));

arr.push_back(2); // 尾插
arr.pop_back(); // 尾删

arr.front(); // 获取首部
arr.back(); // 获取尾部
arr.size(); // 获取长度
arr.empty(); // 判空:1为空,0为不空

arr.clear(); // 清空
arr.resize(6); // 改变长度:如果缩短,删除多余的值,如果扩大,可以指定默认值
vector v1 = {1, 2, 3};
arr.assign(v1.begin(), v1.end()); // 替换

// ----------------------- 2、栈stack:不能访问内部元素
// ----------------------------------
stack stk; // 构造
stk.push(1); // 入栈
stk.pop(); // 出栈

stk.top(); // 取栈顶
stk.size(); // 获取长度
stk.empty(); // 判空

// ----------------------- 3、队列queue:不能访问内部元素
// ---------------------------------
queue que; // 构造
que.push(1); // 进队
que.pop(); // 出队

que.front();
que.back();
que.size();
que.empty();

// 4、优先队列(堆)priority_queue:维护元素的有序性,可以取出最大、最小的元素
// ----------------------
priority_queue pque1; // 储存int的大顶堆
priority_queue<int, vector, greater> pque2; // 储存int的小顶堆

pque2.push(1); // 进堆
pque2.pop(); // 出堆
pque2.top(); // 取堆顶

// ------------------ 5、集合set:确定性、互异性(去重)、有序性(排序)
// ------------------------
set st; // 构造
st.insert(3); // 插入元素
st.insert(1);
st.insert(2);
st.erase(2); // 删除元素

auto it = st.find(2); // 查找元素是否存在,不能使用去找索引
if (it != st.end()) {
cout << “yes” << endl;
}

// ------------------
// 6、映射map:互异性、有序性、输入若干字符串,统计每种字符串的出现次数------------------------
map<int, int> mp; // int -> int (键从小到大)
map<int, int, greater> mp2; // int -> int (键从大到小)
mp[1] = 2; // 增、改、查
mp.erase(1); // 删
if (mp.find(1) != mp.end()) {
cout << “yes” << endl;
}

// -------------7. 字符串string---------------------------
string s; // 构造字符串,为空
string s2 = “awa!”; // 构造字符串,并赋值awa!
string s3(10, ‘6’); // 构造字符串,通过构造函数构造为6666666666

if (s == s2) // 判同
{
cout << “yes” << endl;
}
s = s2 + s3; // 字符串连接
s += “aaa”; // 尾接字符串
string sub = s.substr(5, 3); // .substr(起始下标, 子串长度)
s = “12345678”;
if (s.find(“3465”) != string::npos) // 查找字符串
{
cout << “yes” << endl;
}
// to_string() stoi() stof() stod() // 数值与字符串互转

// -----------8.二元组:pair-----------------
pair<int, char> p = {1, ‘a’};
;
pair<int, long long> p22;
pair<char, int> p3;
cout << p.first << ’ ’ << p.second << endl; // 取值
pair<int, int> p1 = {1, 2};
pair<int, int> p2 = {1, 3};
if (p1 == p2) { // 判同
} // false
return 0;
}

http://www.dtcms.com/a/122003.html

相关文章:

  • PyQt6实例_A股财报数据维护工具_解说并数据与完整代码分享
  • ISP的过程
  • 用户注册(阿里云手机验证码)
  • CNN(卷积神经网络)
  • 共工新闻社与韩国新华报社达成合作
  • Python | 第十四章 | 基于模块开发-出租系统
  • 如何设置 JVM 内存参数(-Xms、-Xmx、-Xss 等)?
  • 文件的操作
  • 自然语言处理入门6——RNN生成文本
  • 揭开 MCP 的神秘面纱:标准化 AI 上下文管理的未来(下)
  • 永磁同步电机 | 分类 / 转子结构 / FOC 控制 / 电路分析
  • Android 中集成 Unity 工程的步骤
  • 点云处理常用的软件、开源库及数据集
  • 将jar包制作成deb一键安装包
  • 从 Excel 到你的表格应用:条件格式功能的嵌入实践指南
  • 【机密计算顶会解读】13:CAGE:通过 GPU 扩展补充 Arm CCA
  • 2025年3月全国青少年软件编程等级考试(Python五级)试卷及答案
  • 图解Java设计模式
  • 005.Gitlab CICD变量使用
  • oauth2.0认证原理
  • word表格间隔设置
  • C++20 数学常数:<numbers> 头文件的革新
  • cmd清除网络共享连接凭证
  • C++高精度算法(加、减、乘)
  • 【C++】 —— 笔试刷题day_13
  • 抽象类及其特性
  • cpp(c++)win 10编译GDAL、PROJ、SQLite3、curl、libtiff
  • Easysearch VS Opensearch 数据写入与存储性能对比
  • HOW - 实现 useClickOutside 或者 useClickAway
  • 大模型本地部署系列(1) Ollama的安装与配置