在 Multimap 中插入一个结构作为值并迭代相同的值以获取值

Inserting a struct as a value in Multimap and Iterating the same to get the values

#include <stdio.h>
#include <map>
struct temp
{
   int x;
   int id;
};

int main()
{
    temp t;
    int key;
    typedef std::multimap<int,struct temp> mapobj;
    t.x = 10;
    t.id = 20;
    key=1;
    mapobj.insert(pair<int,struct>key,t);
    //mapobj.insert(1,t);
    
    return 0;
 }

我是 STL 多重映射的新手,我正在尝试将我的结构数据插入多重映射中,但出现此错误:

main.cpp:25:11: error: expected unqualified-id before ‘.’ token
     mapobj.insert(pair<int,struct temp>key,t);
           ^

征求您的意见。

我认为您需要做一些小的代码更改来修复编译错误,如下所示:

  1. 添加 2 个括号:mapobj.insert(std::pair (key,t) );
  2. 在mapobj.insert(std::pairstruct temp>(key,吨)); (注意:您没有结构的名称:temp)。
  3. 请注意,您应该在第二次使用 mapobj 时在文件底部指定 std::pair
  4. 删除关键字 Tydef(正如用户“Sam Varshavchik”提到的,因为您不需要定义新类型,只需要定义新变量)。
  5. 顺便说一句,以下问题不会导致编译错误,但如果您初始化“key”的值,那将是一件好事,因为如果您不初始化“key”的值,那么 key 可能具有非零的随机值。这称为未定义行为,以后可能会导致一些错误。

下面是编译成功的新代码:

#include <stdio.h>
#include <map>
    
struct temp
{
   int x;
   int id;
};

int main()
{
    temp t;
    int key = 1; // You should initialize the key
    std::multimap<int,struct temp> mapobj; // I fixed this line
    t.x = 10;
    t.id = 20;
    key=1;
    mapobj.insert(std::pair<int,struct temp>(key,t)); // I fixed this line
    //mapobj.insert(1,t);
    
    return 0;
 }