c++ - std::map 使用 STL::map 旋转方法或算法

标签 c++ stl

我正在开发一个内部包含 std::map 的类,现在功能是最佳的,但现在我需要旋转 map ,我的意思是通过旋转更改顺序,除了对应的值之外的 map 元素 ID对于这些值,例如:

给定:

Map[122]=1
Map[12]=2
Map[3]=45

应用旋转算法一次:

Map[12]=2
Map[3]=45
Map[122]=1

再次应用旋转算法:

好吧,我的第一个意图是编写一个执行此操作的算法,但我是 c++ 新手

Map[3]=45
Map[122]=1
Map[12]=2

我在 STL 库中是否有一个我现在看不到的正确解决方案? 谢谢

最佳答案

没有。

map 元素的顺序不是您可以控制的。它是固有的,基于排序键。

当然,您可以提供自己的比较器来操纵容器的底层顺序。

但是,您不应该依赖 map 中的顺序。它不是序列容器,并且根本不是为您将顺序用作属性而设计的。

与其“旋转”,不如每次都在容器中的不同位置开始迭代,然后“环绕”?

关于c++ - std::map 使用 STL::map 旋转方法或算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18242102/

相关文章:

c++ - 读取文件所需的 std::getline 的替代方法

c++ - 使用STL随机化数组条目的简单方法?

c++ - Microsoft Visual C++ 2010 Express - 正确代码中的错误

c++ - 模板类成员方法内的自动 lambda : does not name a type

c++ - 内联汇编程序直接将 double 转换为 long long

c++ - 如何从另一个运行整个 CPP 文件?

c++ - 向实例添加数据的最有效方式

c++ - 如何使用 STL 字符串和流读取/存储 unicode

c++ - 容器的常量正确性

c++ - STL中的优先队列