我一直在尝试按以下方式插入一些键和值,但我收到一个错误,
error: no matching constructor for initialization of 'Edge'
。我正在使用 C++17:
这是我的程序:
#include <iostream>
#include <string>
#include <map>
struct Edge
{
int v1{};
int v2{};
Edge (int v1, int v2)
:v1{v1}, v2{v2}
{
}
};
int main()
{
std::map<std::string, Edge> mymap;
mymap["edge1"] = Edge(0,0);
mymap["edge2"] = Edge(1,1);
return 0;
}
我很确定我的构造函数是正确的,但非常感谢任何帮助。
如评论所述,您的代码中缺少
emplace()
调用:
#include <iostream>
#include <string>
#include <map>
struct Edge
{
int v1{};
int v2{};
Edge(int v1, int v2) : v1{v1}, v2{v2} {}
};
int main()
{
std::map<std::string, Edge> mymap;
mymap.emplace("edge1", Edge(0, 0));
mymap.emplace("edge2", Edge(1, 1));
mymap.emplace("edge2", Edge(2, 2));
for (const auto &pair : mymap)
{
std::cout << pair.first << " " << pair.second.v1 << " " << pair.second.v2 << std::endl;
}
return 0;
}