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

网站页面设计师app推广渠道商

网站页面设计师,app推广渠道商,海南四定网站开发,安阳做网站公司文章目录 priority_queue自定义比较方法对 比较对象结构体 重载 <仿函数为什么是传一个类std::less<T> 和 std::greater<T> lambda unordered_map自定义哈希函数仿函数lambda priority_queue template<class T,class Container std::vector<T>,class…

文章目录

  • priority_queue
      • 自定义比较方法
        • 对 比较对象结构体 重载 <
        • 仿函数
          • 为什么是传一个类
          • std::less<T> 和 std::greater<T>
        • lambda
  • unordered_map
      • 自定义哈希函数
        • 仿函数
        • lambda

priority_queue

template<class T,class Container = std::vector<T>,class Compare = std::less<typename Container::value_type>
> class priority_queue;

自定义比较方法

往往算法可能需要自定义比较逻辑(如 dijkstra需要比较对应路径的长度)

重写方法:

注意都是子节点跟父节点比(堆一般是二叉树)

对 比较对象结构体 重载 <
struct Node {int id;int weight;bool operator<(const Node& other) const {return weight > other.weight; // 注意:反过来才能构成最小堆}
};
std::priority_queue<Node> pq; // 使用默认 std::less<Node>
仿函数

就是对类重载 () 运算符。 注意是传递类!

struct cmp {bool operator()(const Node& a, const Node& b) {return a.weight > b.weight; // 最小堆}
};
std::priority_queue<Node, std::vector<Node>, cmp> pq;
为什么是传一个类
template<class T,class Container = std::vector<T>,class Compare = std::less<typename Container::value_type>
> class priority_queue;

这里的 Compare 是一个类型(class),而模板本来也是类型

STL是这样使用他的

Compare comp; // 默认构造一个比较器对象
if (comp(a, b)) { ... } // 用这个对象来比较
std::less 和 std::greater

<functional>

template <class T>
struct less {bool operator()(const T& a, const T& b) const {return a < b;}
};
template <class T>
struct greater {bool operator()(const T& a, const T& b) const {return a > b;}
};
lambda
auto cmp = [](const Node& a, const Node& b) {return a.weight > b.weight;
};
std::priority_queue<Node, std::vector<Node>, decltype(cmp)> pq(cmp);

lambda 表达式对象,是一个匿名的实例:
上述 cmp 是一个对象实例! 毕竟调用其方法需要一个实例,而一个实例也可以无限用。

class __lambda_123 {
public:bool operator()(const Node& a, const Node& b) const {return a.weight > b.weight;}
} cmp;

unordered_map

template<class Key,class T,class Hash = std::hash<Key>,class KeyEqual = std::equal_to<Key>,class Allocator = std::allocator<std::pair<const Key, T>>
> class unordered_map;

自定义哈希函数

像 std::pair<int, int> 这样的类型标准库没有默认的 std::hash 特
化,因此需要自己提供一个哈希函数。

std::hash<T> 是标准库提供的模板类特化,专门用于哈希表。
(对于 int 这样的类型,一般就返回它本身。unordered_map 的内部机制可能会取模)

std::hash<int> h;
std::size_t hash_value = h(42); // 计算 42 的哈希值
仿函数
#include <unordered_map>
#include <utility>struct pair_hash {std::size_t operator()(const std::pair<int, int>& p) const {return std::hash<int>()(p.first) ^ (std::hash<int>()(p.second) << 1);}
};
std::unordered_map<std::pair<int, int>, std::string, pair_hash> my_map;

( pair 默认支持 == )

lambda

(C++14/17 起支持 构造函数中显式传入 hash/equal 对象)

哈希方法和比较方法:

auto hash_fn = [](const std::pair<int, int>& p) {return std::hash<int>()(p.first) ^ (std::hash<int>()(p.second) << 1);
};auto equal_fn = [](const std::pair<int, int>& a, const std::pair<int, int>& b) {return a == b;
};std::unordered_map<std::pair<int, int>, std::string, decltype(hash_fn), decltype(equal_fn)> my_map(0, hash_fn, equal_fn);

文章转载自:

http://ePNqcRxN.dmLgq.cn
http://xfTrN2HH.dmLgq.cn
http://z1KXeOq8.dmLgq.cn
http://SGNWjMum.dmLgq.cn
http://koICIklj.dmLgq.cn
http://KEb6LqAm.dmLgq.cn
http://mHGhljfr.dmLgq.cn
http://KJfdmMr4.dmLgq.cn
http://5txsUXvl.dmLgq.cn
http://vhNhf6UZ.dmLgq.cn
http://vqSwgDXx.dmLgq.cn
http://ZHzy8VU8.dmLgq.cn
http://XJwdeURs.dmLgq.cn
http://bEqfFiTa.dmLgq.cn
http://5RfmWRVE.dmLgq.cn
http://sCrY9ciz.dmLgq.cn
http://Fcps6C3J.dmLgq.cn
http://Vaasi6rd.dmLgq.cn
http://JvdsCP9q.dmLgq.cn
http://HdzgrPVI.dmLgq.cn
http://d6yIRfkF.dmLgq.cn
http://us2qUlB4.dmLgq.cn
http://hH41vxwl.dmLgq.cn
http://fzfgBSM1.dmLgq.cn
http://SVcJZzX7.dmLgq.cn
http://ehVaO4NP.dmLgq.cn
http://4YoT1rBp.dmLgq.cn
http://pncAXYcY.dmLgq.cn
http://MoqIY5Ow.dmLgq.cn
http://rELbYDvf.dmLgq.cn
http://www.dtcms.com/wzjs/666875.html

相关文章:

  • 建设网站有什么法律么网站推广效果分析
  • 有人知道做网站吗?可信网站代码
  • 腾讯云个人网站备案如何自建购物网站
  • 虹口手机网站制作wordpress淘客插件破解
  • ASP net网站开发资料建网站花多少钱
  • 廊坊做网站公司广州网站优化指导
  • 柳州市建设工程质量安全监督管理处网站diango是做网站的后端吗
  • php网站开发技术背景内容营销的重要性
  • 学做婴儿衣服网站12306网站为什么做不好使
  • 网站设计需求东莞网络推广外包公司
  • 网站制作收费明细表矿产网站建设价格
  • 上海专业做网站公公司域名备案流程
  • 商城网站规划用html5做的美食网站
  • 怎么改网站标题酒泉网站建设平台
  • 二手车为什么做网站在哪里注册域名
  • 专业做胶粘剂招聘网站岳阳建设网站的公司
  • 根据网站集约化建设的要求wordpress 是免费的吗
  • 网站制作公司-山而搜索附近的电子产品
  • 安徽建设行业安全协会网站海外网络加速器
  • 扶贫网站建设方案wordpress如何设置字体大小
  • 谷歌网站优化推广四川住房与城乡建设部网站
  • 国外做SEO网站wordpress 关联表
  • 大丰网站建设哪家好一个页面的网站
  • 深圳找工作哪个网站好广西优化网站 优帮云
  • 中国联通网站备案建设工程合同属于什么合同
  • 衡阳网站seo优化网站建设 中企动力 顺德
  • 学校网站免费html模板做短裙的视频网站
  • 网站界面设计的发展网站规划建设与管理维护课后答案
  • jsp写的网站网站后台管理密码忘记
  • 做签证的网站wordpress分类删不掉