gpt4 book ai didi

c++ - 如何采集同类型Map的值

转载 作者:行者123 更新时间:2023-11-28 01:09:17 28 4
gpt4 key购买 nike

我们有一个 map,key 和 value 都是 int 类型。我们必须在 map 中搜索特定值并将这些键收集到一个 vector 中。代码快照就像

map<int,int>m;
map<int,int>::iterator itr;
vector<int> v;
m.insert(make_pair<int,int>(1,2));
m.insert(make_pair<int,int>(2,2));
m.insert(make_pair<int,int>(3,2));
m.insert(make_pair<int,int>(4,4));
m.insert(make_pair<int,int>(5,5));

当前代码如下:

for ( itr = m.begin(); itr != m.end(); ++itr )
{
if ((*itr).second == 2 )
v.push_back((*itr).first )
}

我们喜欢优化它。我们如何使用 STL 算法。

最佳答案

在我看来,您的做法是错误的,您可能需要 multimap 。

std::multimap<int,int> m;
std::vector<int> v;
m.insert(std::make_pair<int,int>(2,1));
m.insert(std::make_pair<int,int>(2,2));
m.insert(std::make_pair<int,int>(2,3));
m.insert(std::make_pair<int,int>(4,4));
m.insert(std::make_pair<int,int>(5,5));

typedef std::multimap<int,int>::iterator iterator;
std::pair<iterator, iterator> bounds = m.equal_range(2);
for(iterator it = bounds.first; it != bounds.second; ++it)
v.push_back(it->second);

关于c++ - 如何采集同类型Map的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4323576/

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