下面是用作地图中值的类:
class Book
{
int m_nId;
public:
// Book() { } <----- Why is this required?
Book( int id ): m_nId( id ) { }
};
Run Code Online (Sandbox Code Playgroud)
在main()内:
map< int, Book > mapBooks;
for( int i = 0; i < 10; ++i )
{
Book b( i );
mapBooks[ i ] = b;
}
Run Code Online (Sandbox Code Playgroud)
导致错误的声明是:
mapBooks[ i ] = b;
Run Code Online (Sandbox Code Playgroud)
如果我添加默认构造函数,则不会出现错误.但是,我不明白为什么需要.谁能解释一下?如果我使用insert(),问题不会出现.
顺便说一句,我正在使用Visual C++ 2008进行编译.
map<int, int> mp;
Run Code Online (Sandbox Code Playgroud)
我可以理解以下代码:
mp[1] = 1;
mp[2] = 2;
Run Code Online (Sandbox Code Playgroud)
但这有什么意义呢?
mp[3]++;
Run Code Online (Sandbox Code Playgroud)
没有设置mp[3] = n;(n可以是整数).