C++ 有没有办法从映射中获取特定的键值对?

C++ 有没有办法从映射中获取特定的键值对?,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; 我的

我目前正在学习STL中的地图。我想知道如何从映射中获取特定的键值对。例如,下面地图中的第三个键值对<代码>'C'->1

    '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