资讯详情

C++ 连续数值转区间计算

📅 2026/11/2 6:10:47 | 华诺云谱 👁 阅读
C++ 连续数值转区间计算
代码class UnicodeRange { public: uint32_t start 0; uint32_t end 0; }; using UnicodeRanges std::vectorUnicodeRange; UnicodeRanges getRanges(const std::setuint32_t unicodes) { if (unicodes.empty()) return {}; UnicodeRanges ranges; if (*unicodes.begin() unicodes.size() *unicodes.rbegin()) { // 全部连续 ranges.emplace_back( UnicodeRange { *unicodes.begin(), (uint32_t)(*unicodes.begin() unicodes.size()) }); return ranges; } UnicodeRange curRange; curRange.start *unicodes.begin(); curRange.end *unicodes.begin(); for (const auto code : unicodes) { if (code curRange.end) { curRange.end code 1; } else { ranges.emplace_back(curRange); curRange.start code; curRange.end code 1; } } if (ranges.empty() || ranges.back().start ! curRange.start) ranges.emplace_back(curRange); // 尾部连续 return ranges; }测试std::setuint32_t ranges { 1, 2, 3, 4, 9, 22, 23, 24, 90, 91, 100 }; auto blockRanges getRanges(ranges); for (const auto block : blockRanges) { LOG_INFO_STREAM block: block.start - block.end std::endl; }输出block: 1 - 5 block: 9 - 10 block: 22 - 25 block: 90 - 92 block: 100 - 101创作不易小小的支持一下吧
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑