方法一:利用insert命令。
for(i = 0; i<nums.size();i++){
a.insert(map<int,int>::value_type(nums[i], i));
}
方法二:利用数组。
for(i = 0; i < nums.size(); i++){
a[nums[i]] = i;
}
下面大家来看一下其具体效果:
#include <iostream>
#include <map>
#include <vector>
using namespace std;
int main()
{
vector<int> nums;
map<int, int> a;
nums.push_back(3);
nums.push_back(3);
nums.push_back(11);
nums.push_back(15);
for(int i=0; i<nums.size(); i++){ // vector容器遍历
cout<<nums[i]<<” | “;
}
cout<<endl;
cout<<“——方法一—–“<<endl;
for(int i = 0; i<nums.size();i++){
a.insert(map<int,int>::value_type(nums[i], i));
}
map<int, int>::iterator iter; // 声明一个map迭代器
for(iter = a.begin(); iter != a.end(); iter++){ // map容器遍历
cout<<iter->first<<” – “<<iter->second<<endl;
}
cout<<“——方法二—–“<<endl;
a.clear(); // 清空a容器
for(int i = 0; i<nums.size();i++){
a[nums[i]] = i;
}
for(iter = a.begin(); iter != a.end(); iter++){ // map容器遍历
cout<<iter->first<<” – “<<iter->second<<endl;
}
return 0;
}
结果:
3 | 3 | 11 | 15
——方法一—–
3 – 0
11 – 2
15 – 3
——方法二—–
3 – 1
11 – 2
15 – 3
总结,map的方法一和方法二插入方法基本一样,不同之处是,当插入元素的key与map容器已有的key相同时,方法二会用key对应的新的value值更新map中存在的旧的value值,方法一会保留旧的value值。