淺談c++中map插入數據的用法


map:數據的插入

  在構造map容器后,我們就可以往里面插入數據了。這里講三種插入數據的方法:
第一種:用insert函數插入pair數據
 map<int, string> mapStudent;
 mapStudent.insert(pair<int, string>(1,“student_one”));
第二種:用insert函數插入value_type數據
map<int, string> mapStudent;
mapStudent.insert(map<int, string>::value_type (1,"student_one"));
 第三種:用make_pair
mapStudent.insert(make_pair(1, "student_one"));
第三種:用數組方式插入數據
  注意:[]與at的區別

  在C ++ 11中map::at存在:如果該鍵不存在則拋出異常,如果該元素不存在則find返回aMap.end();如果沒有值存在,則為相應鍵值operator[]初始化一個新值。

  所以最好用:索引操作符[]進行設置和.find().at()查找

map<int, string> mapStudent;
mapStudent[1] = “student_one”;
mapStudent[2] = “student_two”;
/*
如果是
#include <map>
map<string, int> mapStudent;
string s;
插入就用m[s]++;
*/
  以上四種用法,雖然都可以實現數據的插入,但是它們是有區別的,當然了第一種和第二種在效果上是完成一樣的,用insert函數插入數據,在數據的插入上涉及到集合的唯一性這個概念,即當map中有這個關鍵字時,insert操作是不能再插入這個數據的, 但是用數組方式就不同了,它可以覆蓋以前該關鍵字對應的值,即:如果當前存在該關鍵字,則覆蓋改關鍵字的值,否則,以改關鍵字新建一個key—value;
  最后記錄下map用lambda表達式for_ecah遍歷時的一個小問題
#include <iostream>
#include <map>
#include <algorithm>
using namespace std;

int main()
{
    map<int ,string> m;
    m.insert(pair<int,string>(1,"a"));
    m.insert(make_pair(2,"b"));
    m.insert(map<int,string>::value_type (3,"c"));
    m.insert(pair<int,string>(4,"d"));
    
    for_each(m.cbegin(),m.cend(),[](const pair<int,string> &it)
                {
                    cout<<"first:"<<it.first<<" second:"<<it.second<<endl;
                });
    return 0;
}

  lambda中的參數列表要寫成pair類型,以為map返回的是一對數據,是pair型的,不可只用map<int,string>::iterator it 迭代器來遍歷。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM