这很好用:
#include <iostream>
#include <map>
using namespace std;
struct Bar
{
int i;
int f;
};
int main()
{
map<int, Bar> m;
Bar b;
b.i = 1;
b.f = 2;
m[0] = b;
}
但是如果我想让它更简洁一点,我会得到错误:
int main()
{
map<int, Bar> m;
m[0] = {1, 2};
}
有什么方法可以使结构初始化语法起作用吗?我做错了吗,还是 map 禁止这样做?
最佳答案
你可以添加一个构造函数:
在这种情况下,我会说它比奇特的新初始化器更好,因为它实际上让维护者无需去寻找它就可以看到映射中放置的是什么类型。
struct Bar
{
Bar(int anI,int aJ)
:i(anI), j(aJ)
{}
int i;
int j;
}
.....
m[0] = Bar(1,2);
关于C++:结构初始化和映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3153548/