在 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);
^
征求您的意见。
我认为您需要做一些小的代码更改来修复编译错误,如下所示:
- 添加 2 个括号:mapobj.insert(std::pair
(key,t) );
- 在mapobj.insert(std::pair
struct temp>(key,吨)); (注意:您没有结构的名称:temp)。
- 请注意,您应该在第二次使用 mapobj 时在文件底部指定 std::pair。
- 删除关键字 Tydef(正如用户“Sam Varshavchik”提到的,因为您不需要定义新类型,只需要定义新变量)。
- 顺便说一句,以下问题不会导致编译错误,但如果您初始化“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;
}
#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);
^
征求您的意见。
我认为您需要做一些小的代码更改来修复编译错误,如下所示:
- 添加 2 个括号:mapobj.insert(std::pair
(key,t) ); - 在mapobj.insert(std::pair
struct temp>(key,吨)); (注意:您没有结构的名称:temp)。 - 请注意,您应该在第二次使用 mapobj 时在文件底部指定 std::pair。
- 删除关键字 Tydef(正如用户“Sam Varshavchik”提到的,因为您不需要定义新类型,只需要定义新变量)。
- 顺便说一句,以下问题不会导致编译错误,但如果您初始化“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;
}