如果key已经存在,[] operator会将key对应的value用新值替换,而insert会返回一个pair说这组元素已经存在。
如果key不存在,二者效果相同
示例:
void print(std::map<int, int> &intmap)
{
using namespace std;
auto iter = intmap.begin();
for(; iter != intmap.end(); ++iter)
{
cout<<iter->first<<" "<<iter->second<<endl;
}
}
int main(int argc, char **argv)
{
using namespace std;
map<int, int> intmap;
for(int i=0; i<5; i++)
{
intmap.insert(make_pair(i, i));
}
print(intmap);
for(int i=0; i<5; i++)
{
//intmap[i]= i+2;//替换key对象的value
intmap.insert(make_pair(i, i+2));//不会修改已经存在的pair
}
print(intmap);
return 0;
}