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

网站没有后台怎么更新文章二手网站模板

网站没有后台怎么更新文章,二手网站模板,国家建筑网站,有模块传奇网站怎么做文章目录1. 功能概述2. 算法原理2.1 std::is_sorted2.2 std::is_sorted_until3. 简化源码实现3.1 基于直接遍历的实现3.2 基于 std::adjacent_find 的实现(标准库风格)3.3 带自定义比较器的版本4. 使用示例5. 应用场景6. 注意事项1. 功能概述 std::is_s…

文章目录

    • 1. 功能概述
    • 2. 算法原理
      • 2.1 std::is_sorted
      • 2.2 std::is_sorted_until
    • 3. 简化源码实现
      • 3.1 基于直接遍历的实现
      • 3.2 基于 std::adjacent_find 的实现(标准库风格)
      • 3.3 带自定义比较器的版本
    • 4. 使用示例
    • 5. 应用场景
    • 6. 注意事项

1. 功能概述

  • std::is_sorted:检查序列是否按升序(或自定义顺序)排列,返回布尔值。
  • std::is_sorted_until:返回序列中第一个破坏排序的元素迭代器,若完全有序则返回尾迭代器。

2. 算法原理

2.1 std::is_sorted

  • 核心逻辑:遍历序列,检查所有相邻元素对是否满足排序条件(默认前 <= 后)。
  • 边界情况:空序列或单元素序列视为有序。
  • 时间复杂度:O(n),n为元素个数。

2.2 std::is_sorted_until

  • 核心逻辑:遍历序列,找到第一个不满足排序条件的相邻元素对,返回后一个元素的迭代器。
  • 时间复杂度:O(n)。

3. 简化源码实现

3.1 基于直接遍历的实现

// std::is_sorted 简化版(默认比较器)
template <typename ForwardIt>
bool is_sorted(ForwardIt first, ForwardIt last) {if (first == last) return true; // 空序列for (ForwardIt next_it = std::next(first); next_it != last; ++first, ++next_it) {if (*next_it < *first) { // 发现逆序对return false;}}return true;
}// std::is_sorted_until 简化版(默认比较器)
template <typename ForwardIt>
ForwardIt is_sorted_until(ForwardIt first, ForwardIt last) {if (first == last) return last;for (ForwardIt next_it = std::next(first); next_it != last; ++first, ++next_it) {if (*next_it < *first) { // 发现逆序对,返回后一个元素迭代器return next_it;}}return last; // 完全有序
}

3.2 基于 std::adjacent_find 的实现(标准库风格)

#include <algorithm> // for std::adjacent_find// 利用 adjacent_find 查找逆序对
template <typename ForwardIt>
bool is_sorted(ForwardIt first, ForwardIt last) {// adjacent_find 返回第一个满足 *it > *(it+1) 的 itreturn std::adjacent_find(first, last, std::greater<>) == last;
}template <typename ForwardIt>
ForwardIt is_sorted_until(ForwardIt first, ForwardIt last) {auto it = std::adjacent_find(first, last, std::greater<>);return (it == last) ? last : std::next(it);
}

3.3 带自定义比较器的版本

// 自定义比较器版本(以降序为例)
template <typename ForwardIt, typename Compare>
bool is_sorted(ForwardIt first, ForwardIt last, Compare comp) {if (first == last) return true;for (ForwardIt next_it = std::next(first); next_it != last; ++first, ++next_it) {if (comp(*next_it, *first)) { // 使用 comp 判断逆序return false;}}return true;
}template <typename ForwardIt, typename Compare>
ForwardIt is_sorted_until(ForwardIt first, ForwardIt last, Compare comp) {if (first == last) return last;for (ForwardIt next_it = std::next(first); next_it != last; ++first, ++next_it) {if (comp(*next_it, *first)) {return next_it;}}return last;
}

4. 使用示例

#include <iostream>
#include <vector>
#include <algorithm>int main() {// 基本用法std::vector<int> v1 = {1, 2, 3, 4, 5};std::vector<int> v2 = {1, 3, 2, 4, 5};std::cout << "v1 is sorted: " << std::boolalpha << std::is_sorted(v1.begin(), v1.end()) << "\n"; // truestd::cout << "v2 is sorted: " << std::is_sorted(v2.begin(), v2.end()) << "\n"; // falseauto it1 = std::is_sorted_until(v1.begin(), v1.end());auto it2 = std::is_sorted_until(v2.begin(), v2.end());std::cout << "v1 sorted until index: " << (it1 - v1.begin()) << "\n"; // 5(end)std::cout << "v2 sorted until index: " << (it2 - v2.begin()) << "\n"; // 2(元素2的位置)// 自定义比较器(降序检查)std::vector<int> v3 = {5, 4, 3, 2, 1};std::cout << "v3 is sorted descending: " << std::is_sorted(v3.begin(), v3.end(), std::greater<int>()) << "\n"; // truereturn 0;
}

5. 应用场景

  • 验证排序结果正确性。
  • 快速判断序列是否需要排序。
  • 获取最长有序前缀长度(通过 std::distance(first, is_sorted_until(first, last)))。

6. 注意事项

  • 迭代器类型:支持前向迭代器及以上(如双向迭代器、随机访问迭代器)。
  • 自定义比较器:需满足严格弱序(Strict Weak Ordering)。
  • 空序列处理:始终返回 true(is_sorted)或尾迭代器(is_sorted_until)。

文章转载自:

http://zwUd63in.dkqyg.cn
http://6jIz4H0m.dkqyg.cn
http://sQwNxyno.dkqyg.cn
http://NcfqUa7s.dkqyg.cn
http://nppswC4H.dkqyg.cn
http://D8bVAsjS.dkqyg.cn
http://3CtM5sNL.dkqyg.cn
http://8pY5ces5.dkqyg.cn
http://u7RTthLV.dkqyg.cn
http://rzFWwxCZ.dkqyg.cn
http://R8GBdDsb.dkqyg.cn
http://D0B4tt86.dkqyg.cn
http://zEUAmREo.dkqyg.cn
http://2teddg8i.dkqyg.cn
http://A3Wmv6uv.dkqyg.cn
http://JwCrIixT.dkqyg.cn
http://m9ttdGc6.dkqyg.cn
http://0BcQuTsb.dkqyg.cn
http://wdd2eimD.dkqyg.cn
http://GQmJAUjS.dkqyg.cn
http://HYTPYwQR.dkqyg.cn
http://dR2oobTb.dkqyg.cn
http://FATcXUzT.dkqyg.cn
http://rO5TlWDq.dkqyg.cn
http://5Fik9HBJ.dkqyg.cn
http://cnfqRJPs.dkqyg.cn
http://8hpTWH9j.dkqyg.cn
http://zWvgip5w.dkqyg.cn
http://ZsVJBtmV.dkqyg.cn
http://nApmzlYS.dkqyg.cn
http://www.dtcms.com/wzjs/708754.html

相关文章:

  • 许昌住房和城乡建设部网站国外高清视频素材网站推荐
  • 一个人可以做几个网站负责人aso优化
  • 东莞网页设计培训中心广州seo招聘信息
  • 莱州网络建站短视频矩阵seo系统源码
  • 网站文化制度建设大连网络公司有哪些
  • 手机网站前端开发布局技巧100种广告设计
  • 顺企网浙江网站建设茶山东莞网站建设
  • 做poster的网站wordpress 禁止自动保存
  • cc域名网站回龙观网站建设
  • 百度网站建设公司哈尔滨公司网站建设多少钱
  • 官网型网站开发网站制作公司怎么看
  • 做网站找哪个软件wordpress中文链接
  • 中国网站免费服务器网站制作变量
  • 宿州市建设工程质量监督站网站东莞松山湖招聘
  • 凡科网站教程不需要备案如何做网站
  • 卯兔科技网站建设公司网站建设费用会计入账
  • 佛山网站定制开发漳州网站建设公司首选公司
  • 电商网站网址大全鳌江网站建设
  • aspnet网站开发pdf携程网站建设评价
  • 定边网站建设公司网站怎么做美观
  • 网站设计 品牌设计网页认证怎么认证
  • 黄金网站软件入口免费登录百度账号
  • 网站建设乙方义务近期新闻
  • 专业的论坛网站建设阿里云网站建设方案书中山市
  • 网站拒绝了您的访问百科类网站建设
  • 深圳建网站公司网站开发定制推广杭州
  • 做网站建设网站制作双通网络网站建设价格
  • 上海网站建设-网建知识手机2345网址导航老版下载
  • 电子商务物流网站建设wordpress菜单栏功能
  • 临安规划建设局网站免费网站托管平台