C++ 初始化映射时出错
以下代码给出错误“binary”您必须为codepoint/code定义C++ 初始化映射时出错,c++,dictionary,stl,C++,Dictionary,Stl,以下代码给出错误“binary”您必须为codepoint/code定义y; } }; int main() { 地图m; 点p1,p2; p1.get(); p2.get(); m、 插入(形成配对(p1、p2)); } 您还可以在第三个模板参数中为std::map指定一个比较器,但我认为定义必须为codepoint/code定义y; } }; int main() { 地图m; 点p1,p2; p1.get(); p2.get(); m、 插入(形成配对(p1、p2)); } 您也可以在
x>>y;
}
};
int main()
{
地图m;
点p1,p2;
p1.get();
p2.get();
m、 插入(形成配对(p1、p2));
}
您还可以在第三个模板参数中为std::map
指定一个比较器,但我认为定义必须为codepoint/code定义
x>>y;
}
};
int main()
{
地图m;
点p1,p2;
p1.get();
p2.get();
m、 插入(形成配对(p1、p2));
}
您也可以在第三个模板参数中为
std::map
指定一个比较器,但我认为定义为什么在使用m[p1]=m[p2]而不是m.insert(make_pair(p1,p2))?@user6275035时会出现相同的错误?原因完全相同:因为没有定义使用的运算符。为什么在使用m[p1]=m[p2]时会出现相同的错误而不是m.insert(make_pair(p1,p2))?@user6275035的原因完全相同:因为未定义使用的运算符。
#include <iostream>
#include <map>
using namespace std;
struct point
{
float x;
float y;
public:
void get() {
cin >> x >> y;
}
};
int main()
{
map<point, point> m;
point p1, p2;
p1.get();
p2.get();
m.insert(make_pair(p1,p2));
}
#include <iostream>
#include <map>
using namespace std;
struct point
{
float x;
float y;
public:
// add this function
bool operator<(const point& p) const {
// example implementation
if (x < p.x) return true;
return x == p.x && y < p.y;
}
void get() {
cin >> x >> y;
}
};
int main()
{
map<point, point> m;
point p1, p2;
p1.get();
p2.get();
m.insert(make_pair(p1,p2));
}