gpt4 book ai didi

c++ - 使用 iter_swap 交换 map 中的元素

转载 作者:行者123 更新时间:2023-11-27 23:35:40 26 4
gpt4 key购买 nike

我有一个“简单”的问题:我正在尝试交换 map 中的对以更改顺序。此代码无法编译。

#include <iostream>
#include <string>
#include <map>
#include <algorithm>

int main()
{
std::map<std::string, int> map;
map.insert({"one", 1});
map.insert({"two", 2});
map.insert({"three", 3});

for(const auto& e :map)
{
std::cout << e.first << " " << e.second << std::endl;
}

std::iter_swap(map.begin(), map.rbegin());

for(const auto& e :map)
{
std::cout << e.first << " " << e.second << std::endl;
}
}

这可能吗?我该怎么做?

最佳答案

Is it possible

这是不可能的。映射的元素按照比较函数建立的顺序排列。元素不能交换。

如果你想要一个可以选择对顺序的结构,你可以使用 std::vector<std::pair<std::string, int>>反而。如果您想要快速查找和任意顺序,那么您需要一个多索引数据结构。标准库没有这样的容器。然而,Boost 确实如此。

关于c++ - 使用 iter_swap 交换 map 中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59397039/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com