为什么以下代码会打印1
?
#include <iostream>
#include <map>
#include <string>
#include <utility>
struct Foo
{
Foo(int bar, const std::string& baz)
: bar(bar)
, baz(baz)
{}
int bar;
std::string baz;
bool operator<(const Foo& rhs) const
{
if (bar < rhs.bar && baz < rhs.baz)
{
return true;
}
else
{
return false;
}
}
};
int main()
{
Foo first(0, "test");
Foo second(1, "test");
std::map<Foo, std::string> m;
m.insert(std::make_pair(first, "test"));
m.insert(std::make_pair(second, "test1"));
std::cout << m.size() << std::endl;
}
对insert
的第二次调用表示我们已在地图中拥有该项目。为什么呢?
答案 0 :(得分:0)
insert
不会执行任何操作。
答案 1 :(得分:0)
第二次插入调用表示我们已经在地图中拥有该项目。为什么呢?
因为first
已经在地图中。这正是地图的用途:检查地图中的键是否正确,这正是错误所说的。