回覆列表
  • 1 # 使用者834195712159

    方法一:利用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值。

  • 中秋節和大豐收的關聯?
  • 今年適合收藏哪款白酒?