当前位置: 首页 > 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.mrgr.cn/news/97775.html

相关文章:

  • 操作符详解(下)——包含整形提升
  • 第1节:计算机视觉发展简史
  • 系统分析师(二)--操作系统
  • SQLI打靶
  • Pascal VOC 2012 数据集格式与文件结构
  • Python 网络请求利器:requests 包详解与实战
  • 配置与管理代理服务器
  • 解决前后端时区不一致问题
  • Helm核心概念与常见操作介绍
  • VSCode 常用快捷键
  • 神经网络入门—自定义神经网络续集
  • CSRF漏洞技术解析与实战防御指南
  • 【WRF理论第十七期】单向/双向嵌套机制(含namelist.input详细介绍)
  • SAP ABAP 多线程处理/并行处理的四种方式
  • Quill富文本编辑器支持自定义字体(包括新旧两个版本,支持Windings 2字体)
  • 柑橘病虫害图像分类数据集OrangeFruitDaatset-8600
  • vue3中watch的使用示例
  • NO.84十六届蓝桥杯备战|动态规划-路径类DP|矩阵的最小路径和|迷雾森林|过河卒|方格取数(C++)
  • Stable Diffusion + Contronet,调参实现LPIPS最优(带生成效果+指标对比)——项目学习记录
  • 网络协议学习