• vector

set转化为vector:vec.assign(set.begin(), set.end())

  • map

1. map默认从小到达排序,想要从大到小,可以:

map<string, int, greater<string>>

2. map 不可以使用sort排序!不过可以使用在定义map的时候,传入函数指针自定义map排序

  • list

比如在第五个位置插入3个88的 错误方法:

auto ite = data.begin();

data.insert(iter + 5, 3, 88);

ite不可以直接+5,不支持这个操作,实际上ite一般支持++,比如++ite比ite++更简单?

正确方法:

auto iter = begin(data);

std::advance(iter, 5);

data.insert(iter, 3, 88);

但是vector的insert就可以直接vec.insert(vec.begin() + 5, 88);

  • set

set没有push()和push_back()操作,取代的是:insert() 或 emplace()!

  • stack

top(), size(), empty()

push() / emplace(),pop()

swap()

  • priority_queue

优先队列,priority_queue<class Type,class Container,class Compare>,即类型,容器和比较器(比较器类型),

默认容器为vector,可以自定义容器类型,并自定义排序函数,我们并不关心优先队列是不是vector实现的!

但是要是出现了自定义类型,一般想要自定义函数,这个时候中间的容器就不可以省略了 —— 建议容器写在最后,根据自定义类型推测默认vector<T>容器!

自定义比较有三种方法:

// 在结构体/类内重载<
struct Status{
        int val;
ListNode* node;
bool operator < (const Status &tmp) const{
// 函数必须是静态的 使得该函数可以被 const 对象也就是常量所调用
// 形参可以加上const关键字和&,保证安全性,提高效率
return val > tmp.val;
}
};
priority_queue<Status> pq;
// 自定义比较函数模板结构体,或者说重载的是()!!!
struct cmp{ bool operator ()(const node &a, const node &b)
{
return a.value>b.value;// 按照value从小到大排列
}
};
priority_queue<node, vector<node>, cmp>q;

第三种方法:友元函数,略

没有见到使lambda表达式实现的,因为它的参数不是一个函数,而是一个结构体,或者不理会参数重载更简单。

STL 容器操作的更多相关文章

  1. STL容器操作

    目录 1. 数组 2. Vector 3. List 3.1. std::forward_list 4. Tuple 4.1. 运行期索引 4.2. 元组合并 4.3. 元祖遍历 5. Pair 6. ...

  2. STL容器能力一览表和各个容器操作函数异常保证

    STL容器能力一览表 Vector Deque List Set Multiset map Multimap 典型内部 结构 dynamic array Array of arrays Doubly ...

  3. 【C++】STL,vector容器操作

    C++内置的数组支持容器的机制,但是它不支持容器抽象的语义.要解决此问题我们自己实现这样的类.在标准C++中,用容器向量(vector)实现.容器向量也是一个类模板.标准库vector类型使用需要的头 ...

  4. c++ stl容器set成员函数介绍及set集合插入,遍历等用法举例

    c++ stl集合set介绍 c++ stl集合(Set)是一种包含已排序对象的关联容器.set/multiset会根据待定的排序准则,自动将元素排序.两者不同在于前者不允许元素重复,而后者允许. 1 ...

  5. STL容器删除元素的陷阱

    今天看Scott Meyers大师的stl的用法,看到了我前段时间犯的一个错误,发现我写的代码和他提到错误代码几乎一模一样,有关stl容器删除元素的问题,错误的代码如下:std::vector< ...

  6. STL容器的适用情况

     转自http://hsw625728.blog.163.com/blog/static/3957072820091116114655254/ ly; mso-default-props:yes; m ...

  7. STL容器的遍历删除

    STL容器的遍历删除 今天在对截包程序的HashTable中加入计时机制时,碰到这个问题.对hash_map中的每个项加入时间后,用查询函数遍历hash_map,以删除掉那些在表存留时间比某个阈值长的 ...

  8. STL容器与配接器

    STL容器包括顺序容器.关联容器.无序关联容器 STL配接器包括容器配接器.函数配接器 顺序容器: vector                             行为类似于数组,但可以根据要求 ...

  9. STL容器的本质

    http://blog.sina.com.cn/s/blog_4d3a41f40100eof0.html 最近在学习unordered_map里面的散列函数和相等函数怎么写.学习过程中看到了一个好帖子 ...

  10. STL容器是否是线程安全的

    转载http://blog.csdn.net/zdl1016/article/details/5941330 STL的线程安全. 说一些关于stl容器的线程安全相关的话题. 一般说来,stl对于多线程 ...

随机推荐

  1. 微软憋大招:SQL Server + Copilot = 地表最强AI数据库!

    微软憋大招:SQL Server + Copilot = 地表最强AI数据库! 微软布局代码AI霸主地位 微软在人工智能领域的布局引人注目,尤其在代码生成领域,微软通过Copilot展现出了强大的竞争 ...

  2. PHP数据库连接教程 - QSZ

    1准备工作 首先,确保你的环境中已安装: PHP 7.0+ MySQL/MariaDB Web服务器(Apache/Nginx) 2数据库连接代码 // config.php setAttribute ...

  3. Python 在PDF中绘制线条、矩形、椭圆形

    在PDF中绘制图形可以增强文档的视觉效果.通过添加不同类型的形状,如实线.虚线.矩形.圆形等,可以使文档更加生动有趣,提高读者的阅读兴趣.这对于制作报告.演示文稿或是教材特别有用.本文将通过以下几个示 ...

  4. 读书笔记-C#8.0本质论-03

    15. 委托和lambda表达式 15.1 委托概述 namespace ConsoleApp1; internal static class Program { private enum SortT ...

  5. jsp移动端和pc端页面判断及切换

    function goPAGE() { if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobi ...

  6. 使用archlinux AUR源下载安装的方法 以及 解决makepkg网络连接超时(time out)的问题

    1.使用archlinux(AUR)源下载安装软件/驱动的方式 2.解决使用此方时无法通过网络下载资源文件的问题(网络连接超时/time out) 1.使用archlinux(AUR)源下载安装软件/ ...

  7. 全网最详细的 tcpdump 使用指南

    https://www.cnblogs.com/wongbingming/p/13212306.html 今天要给大家介绍的一个 Unix 下的一个 网络数据采集分析工具,也就是我们常说的抓包工具. ...

  8. Spring RestTemplete支持Https安全请求

    实现步骤 Step1: 自定义ClientHttpRequestFactory package com.example.demo.https; import org.springframework.h ...

  9. C#/.NET/.NET Core技术前沿周刊 | 第 18 期(2024年12.16-12.22)

    前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...

  10. Qt数据库应用4-数据打印到纸张

    一.前言 数据能够打印到pdf文件,当然可以打印到纸张,而且使用qprinter默认就是打印到纸张的,上一篇文章写得功能是打印到pdf,其实还要单独特殊设置打印到文件,并指定格式为pdf.不指定输出文 ...