下面的代码可以吗?
class A
{
public:
A();
void foo();
};
map<int,A> m;
m[0].foo();
或者我必须执行以下操作:
map<int,A> m;
m[0] = A();
m[0].foo();
还有,我可以这样做吗:
map<int,A> m;
A a = m[5];
通过引用访问怎么样:
void foo(A & a);
map<int,A> m;
foo(m[5]);
最佳答案
map::operator [] 将在运行时创建一个新值(如果它尚不存在)。因此,您的所有代码示例都可以正常工作。
也就是说,这个例子:
map<int,A> m;
m[0] = A(); // redundant
m[0].foo();
因为第二行是多余的,所以有点矫枉过正。
关于c++ - 在不先插入标准 map 元素的情况下调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1639914/