相关疑难解决方法(0)

为什么在STL映射中用作值的类需要...中的默认构造函数?

下面是用作地图中值的类:

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 &lt 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进行编译.

c++ dictionary stl default-constructor

7
推荐指数
1
解决办法
859
查看次数

C++ map do plus plus没有初始化

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可以是整数).

c++

2
推荐指数
1
解决办法
116
查看次数

标签 统计

c++ ×2

default-constructor ×1

dictionary ×1

stl ×1