【问题标题】:How to take user input in maps and multipmaps?如何在地图和多图地图中获取用户输入?
【发布时间】:2020-03-09 22:04:21
【问题描述】:

我刚刚研究了多图(工作和其他相关的东西)。 在这里,我找到了这段代码sn -p

gquiz1.insert(pair <int, int> (5, 40)); 
gquiz1.insert(pair <int, int> (4, 30)); 
gquiz1.insert(pair <int, int> (3, 60)); 
gquiz1.insert(pair <int, int> (1, 20)); 
gquiz1.insert(pair <int, int> (5, 50)); 
gquiz1.insert(pair <int, int> (6, 50)); 
gquiz1.insert(pair <int, int> (6, 10)); 

但是想知道,如果用户想在运行时输入键和数据的值,尽管静态给出。我是 STL 的新手。请帮忙,尽管静态给出,我如何在运行时获取上述代码的值?

【问题讨论】:

  • 您是在问一般如何接收用户输入?
  • 注意:执行静态初始化的更现代的方式类似于std::multimap&lt;int, int&gt; gquiz1 = { {5,40}, {4,30}, {3,60} } ;

标签: c++ stl maps containers


【解决方案1】:

当然可以:

int main()
{
    std::multimap<int, int> gquiz1;
    int key, val;
    std::cin >> key >> val;
    gquiz1.insert(std::pair<int, int>(key, val));

    //print map content
    for(const auto& elem: gquiz1)
    {
        std::cout << elem.first << " " << elem.second << "\n";
    }
}

Try it online


std::multimap(或任何其他容器)不关心输入的来源。程序员需要知道数据应该从哪里来,然后将其传递给容器以供以后使用。如果您需要一个永不改变的常量,文字是一种选择。您还可以计算某些内容,从用户、文件、数据库、Internet 或您的程序可以访问的任何地方读取输入。

【讨论】:

    【解决方案2】:

    事实上,你唯一需要做的就是替换整数文字

    gquiz1.insert(pair <int, int> (5, 40));
    

    对于变量

    gquiz1.insert(pair <int, int> (key, value));
    

    因为变量可以在运行时分配任何值,例如来自用户输入的值。

    这是一个演示程序,它使用了emplaceinsert 两种方法。

    #include <iostream>
    #include <map>
    
    int main() 
    {
        std::multimap<int, int> m;
    
        int key, value;
    
        key = 5; value = 40;
    
        m.emplace( key, value );
    
        key = 4; value = 30;
    
        m.insert( { key, value } );
    
        for ( const auto &item : m )
        {
            std::cout << "{ " << item.first << ", " << item.second << " } ";
        }
        std::cout << '\n';
    
        return 0;
    }
    

    程序输出是

    { 4, 30 } { 5, 40 } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-03
      • 1970-01-01
      相关资源
      最近更新 更多