gpt4 book ai didi

c++ - 控制 map 中元素的顺序

转载 作者:太空宇宙 更新时间:2023-11-04 15:23:40 27 4
gpt4 key购买 nike

我创建了一个 map :

map<string, string> cuts;

cuts["cutb"] = "a>1";
cuts["cuta"] = "b>3";
cuts["cutc"] = "c<5";

当我用 map<string, string>::iterator itr = cuts.begin(); 遍历这张 map 时它按字母顺序排列:cuta、cutb、cutc 等。

如何强制迭代器遵循我定义元素的顺序,即 cutb、cuta、cutc?

最佳答案

您需要使用数据结构的其他一些实现。在您的情况下,红黑树实现不适合您。

从更一般的角度来看:如果按添加顺序遍历条目,为什么需要创建映射?列表/数组/vector 对是否满足您的需求?

编辑:提示:每当您选择使用特定的数据结构时,问问自己您需要它支持的确切操作。回答完之后,你应该可以更准确地选择。如果您需要按键查找、按键插入以及检查某个键是否存在,则 Map 非常有用。但是,您在优化这些操作的实现中付出的代价通常是您丢失了元素的插入顺序。

EDIT2:遍历对列表:

// pair is class in namespace std
vector<pair<string, string> > v;
v.push_back(make_pair("cutb", "a>1"));
v.push_back(make_pair("cuta", "b>3"));
v.push_back(make_pair("cutc", "c<5"));
for (int i = 0; i < v.size(); i++) {
// the first element of the pair is addressed with .first; the second - .second
cout << "For key " << v[i].first << " the value is " << v[i].second << endl;
}

vector 中的迭代也可以使用迭代器完成,但我更喜欢索引方法,因为它同样最优,但更容易理解。

关于c++ - 控制 map 中元素的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13789818/

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