以下代码可以吗?
class A
{
public:
A();
void foo();
};
map<int,A> m;
m[0].foo();
Run Code Online (Sandbox Code Playgroud)
或者我必须执行以下操作:
map<int,A> m;
m[0] = A();
m[0].foo();
Run Code Online (Sandbox Code Playgroud)
而且,我可以这样做:
map<int,A> m;
A a = m[5];
Run Code Online (Sandbox Code Playgroud)
如何通过引用访问:
void foo(A & a);
map<int,A> m;
foo(m[5]);
Run Code Online (Sandbox Code Playgroud)
map :: operator []如果它尚不存在,将动态创建一个新值.因此,您的所有代码示例都将起作用.
那说,这个例子:
map<int,A> m;
m[0] = A(); // redundant
m[0].foo();
Run Code Online (Sandbox Code Playgroud)
因为第二条线是多余的,所以是过度的.
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |