如何在 C 中同时有效地对多个向量进行排序,同时保留对应性?
Dec 05, 2024 am 07:59 AM使用 Boost 或 STL 对 C 语言中的压缩(锁定)容器进行排序
简介
同时排序多个容器的任务向量同时保持其元素间的对应关系是编程中的常见挑战。本文探讨了使用 Boost 库或标准模板库 (STL) 解决此问题的方法。
标准方法
标准方法包括从向量转换为复合数据结构,例如元组或结构。然而,这种方法需要复制数据,效率较低。
Boost 解决方案
Boost 提供了 boost::zip_iterator 和 boost::zip_range 来启用创建并行遍历多个容器的迭代器。然而,这些迭代器是只读的,不是随机访问的,这限制了它们在标准排序算法中的使用。
Range-v3 解决方案
一种解决方案是使用range-v3 库。 view::zip 函数创建一个并行迭代多个容器的视图。此视图允许使用 range::sort 函数进行排序。
#include <range/v3/all.hpp> #include <iostream> int main() { std::vector<int> v1 = {15, 7, 3, 5}; std::vector<int> v2 = {1, 2, 6, 21}; ranges::sort(ranges::view::zip(v1, v2), std::less<>{}, &std::pair<int, int>::first); std::cout << ranges::view::all(v1) << '\n'; std::cout << ranges::view::all(v2) << '\n'; return 0; }
登录后复制
此代码演示了如何同时对两个向量进行排序,同时保持元素对应关系。排序结果将打印到控制台。
未来注意事项
虽然这种方法适用于序列,但将其扩展为支持其他容器类型(例如列表)需要双向和随机访问迭代器。目前,STL 的 std::sort 函数不支持双向迭代器。
以上是如何在 C 中同时有效地对多个向量进行排序,同时保留对应性?的详细内容。更多信息请关注PHP中文网其他相关文章!
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前
By 尊渡假赌尊渡假赌尊渡假赌
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林

热门文章
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前
By 尊渡假赌尊渡假赌尊渡假赌
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林

热门文章标签

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)