gpt4 book ai didi

c++ - 从嵌套的 multimap 访问 multimap::equal_range 返回的所有值

转载 作者:太空宇宙 更新时间:2023-11-04 11:36:59 28 4
gpt4 key购买 nike

我已经声明了一个包含字符串和映射的多重映射。该映射包含字符串和一对整数。

std::multimap<string, std::map<string, std::pair<int, int>>> traders;
std::map<string, std::pair<int, int>> products;
std::pair<int, int> side;

我通过以下方式向该 multimap 添加新值:

products.emplace(stringValue1, std::pair<int, int>(intValue1, intValue2));
traders.emplace(stringValue2, products);

现在,我遇到了问题。我试图找到具有相同键值的交易者,然后读取每个找到的交易者的相关值。为了找到具有给定键值的交易者,我使用了以下代码并且它有效

std::pair< 
std::multimap<string, std::map<string, std::pair<int, int>>>::iterator,
std::multimap<string, std::map<string, std::pair<int, int>>>::iterator
> ret;
ret = traders.equal_range(stringKeyValue);

我可以通过以下代码访问多重映射的第一个值(字符串)

std::multimap<string, std::map<string, std::pair<int, int>>>::iterator itr1 = ret.first;
std::cout << " " << itr1->first << std::endl;

但我无法访问 multimap 的任何其他元素。如果您查看我的 multimap 声明,我不仅需要访问第一个字符串,还需要访问第二个字符串和一对与返回的交易者关联的整数。

我尝试了很多不同的东西,但没有一个奏效,我的脑袋现在都快融化了。我希望你能帮助你们。谢谢。

最佳答案

也许这会有所帮助。我还没有测试过。

typedef std::map<string, std::pair<int, int> > TraderProductMap;
typedef std::multimap<string, TraderProductMap> TraderMap;

typedef TraderProductMap::iterator TraderProductMapIter;
typedef TraderMap::iterator TraderMapIter;

std::pair<TraderMapIter, TraderMapIter> range;
range = traders.equal_range(stringKeyValue);

for(TraderMapIter itTrader = range.first;itTrader != range.second;++itTrader) {

std::cout << " " << itTrader->first << std::endl;

for(TraderProductMapIter itProduct = itTrader->second.begin();itProduct != itTrader->second.end();++itProduct) {
std::cout << " " << itProduct->first << " " itProduct->second->first << " " << itProduct->second->second << std::endl;
}

std::cout << std::endl;

}

关于c++ - 从嵌套的 multimap 访问 multimap::equal_range 返回的所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22736564/

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