C++ 有没有办法从映射中获取特定的键值对?
我目前正在学习STL中的地图。我想知道如何从映射中获取特定的键值对。例如,下面地图中的第三个键值对<代码>'C'->1C++ 有没有办法从映射中获取特定的键值对?,c++,dictionary,stl,iterator,C++,Dictionary,Stl,Iterator,我目前正在学习STL中的地图。我想知道如何从映射中获取特定的键值对。例如,下面地图中的第三个键值对'C'->1 'A'-> 1 'B'-> 1 'C'-> 1 'D'-> 1 'E'-> 2 是的,我们可以访问映射的“第三个键值对”,但这不是很简单。我们需要在映射的开头获得一个迭代器,然后将其推进两次(注意,在更通用的代码中,在执行类似操作之前,您应该检查映射是否具有适当的大小) std::map my\u map; 我的
'A'-> 1
'B'-> 1
'C'-> 1
'D'-> 1
'E'-> 2
是的,我们可以访问映射的“第三个键值对”,但这不是很简单。我们需要在映射的开头获得一个迭代器,然后将其推进两次(注意,在更通用的代码中,在执行类似操作之前,您应该检查映射是否具有适当的大小)
std::map my\u map;
我的地图['C']=3;
我的地图['A']=1;
我的地图['B']=2;
自动开始=我的地图。开始();
标准:前进(开始,2);
std::cout first是的,我们可以访问映射的“第三个键值对”,但这不是很简单。我们需要在映射的开头获得一个迭代器,然后将其推进两次(注意,在更通用的代码中,在执行类似操作之前,您应该检查映射是否具有适当的大小)
std::map my\u map;
我的地图['C']=3;
我的地图['A']=1;
我的地图['B']=2;
自动开始=我的地图。开始();
标准:前进(开始,2);
std::cout first如果我正确理解了你,那么你需要
#include <iostream>
#include <map>
#include <iterator>
int main()
{
std::map<char, unsigned int> m =
{
{ 'A', 1 }, { 'B', 1 }, { 'C', 1 }, { 'D', 1 }, { 'E', 2 }
};
auto it = std::next( std::begin( m ), std::min<decltype( m )::size_type>( m.size(), 2 ) );
if ( it != std::end( m ) )
{
std::cout << it->first << ": " << it->second << '\n';
}
return 0;
}
也就是说,您可以对迭代器使用操作
或者您可能只需要使用类的方法find
,例如
#include <iostream>
#include <map>
#include <iterator>
int main()
{
std::map<char, unsigned int> m =
{
{ 'A', 1 }, { 'B', 1 }, { 'C', 1 }, { 'D', 1 }, { 'E', 2 }
};
auto it = m.find( 'C' );
if ( it != std::end( m ) )
{
std::cout << it->first << ": " << it->second << '\n';
}
return 0;
}
如果我理解正确的话,你需要
#include <iostream>
#include <map>
#include <iterator>
int main()
{
std::map<char, unsigned int> m =
{
{ 'A', 1 }, { 'B', 1 }, { 'C', 1 }, { 'D', 1 }, { 'E', 2 }
};
auto it = std::next( std::begin( m ), std::min<decltype( m )::size_type>( m.size(), 2 ) );
if ( it != std::end( m ) )
{
std::cout << it->first << ": " << it->second << '\n';
}
return 0;
}
也就是说,您可以对迭代器使用操作
或者您可能只需要使用类的方法find
,例如
#include <iostream>
#include <map>
#include <iterator>
int main()
{
std::map<char, unsigned int> m =
{
{ 'A', 1 }, { 'B', 1 }, { 'C', 1 }, { 'D', 1 }, { 'E', 2 }
};
auto it = m.find( 'C' );
if ( it != std::end( m ) )
{
std::cout << it->first << ": " << it->second << '\n';
}
return 0;
}
你想怎样得到它?创建一个映射是为了给你一个与某个键相关的值。@AndyG我可以只得到第三个键吗<代码>C
还是不可能?您想如何获得它?创建一个映射是为了给你一个与某个键相关的值。@AndyG我可以只得到第三个键吗<代码> c>代码>或者是不可能的吗?请注意,如果您不想按密钥访问数据,则应该考虑另一个更准确的容器。您可以找到一个图表,它将有助于为这个场景选择一个准确的容器。非常感谢。我现在明白了,如果你不想通过密钥访问数据,你应该考虑另一个更准确的容器。您可以找到一个图表,它将有助于为这个场景选择一个准确的容器。非常感谢。我现在掌握了窍门。
C: 1